|
Запретить передачу null параметра в PL/SQL procedure
|
|||
---|---|---|---|
#18+
xtender, А почему ты считаешь, что исчезла официальная поддержка в 11.2? По твоей ссылке - https://docs.oracle.com/cd/E11882_01/server.112/e40540/tablecls.htm#CBBFFHEB Numeric Data Types The Oracle Database numeric data types store fixed and floating-point numbers, zero, and infinity. Some numeric types also store values that are the undefined result of an operation, which is known as "not a number" or NAN. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2020, 20:34 |
|
Запретить передачу null параметра в PL/SQL procedure
|
|||
---|---|---|---|
#18+
xtender, > Positive and negative infinity ( generated only by importing from an Oracle Database, Version 5 ) Извините, я вовремя не прочитал что это невозможно, поэтому уже сделал в SQL+. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2020, 20:47 |
|
Запретить передачу null параметра в PL/SQL procedure
|
|||
---|---|---|---|
#18+
Bfink НеофитSQL, Бесконечность получить просто, в колонку NUMBER нужно инсертить 1/0b или -1/0b для отрицательной бесконечности. А вот NaN так вставить не удалось. Зато OCI это делает легко - вставляешь строку в числовой параметр и в таблице очень плохое значение. Оно почему то больше нуля и его можно выделить на равенство. Особенно прикольно делать по этой колонке группировку. У меня получилось вставить в поле NUMBER число больше бесконечности, но я не могу его назвать NaN, потому что оно себя так не ведет - судите сами Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2020, 20:53 |
|
Запретить передачу null параметра в PL/SQL procedure
|
|||
---|---|---|---|
#18+
НеофитSQL, Не "невозможно", а не поддерживается. Со всеми вытекающими... ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2020, 20:56 |
|
Запретить передачу null параметра в PL/SQL procedure
|
|||
---|---|---|---|
#18+
Bfink, Numeric не number. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2020, 20:56 |
|
Запретить передачу null параметра в PL/SQL procedure
|
|||
---|---|---|---|
#18+
xtender НеофитSQL, Не "невозможно", а не поддерживается. Со всеми вытекающими... К сожалению, документация Оракла - как та библия. Что захочешь, то и найдешь. https://docs.oracle.com/database/121/DRDAS/data_type.htm#DRDAS2 Вроде относится к 12.1 Черным по белому говорит что INFINITY поддерживается для NUMBER. (там же пишет что NaN не поддерживает, сорри Bfink) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2020, 21:21 |
|
Запретить передачу null параметра в PL/SQL procedure
|
|||
---|---|---|---|
#18+
Было немного времени, я соорудил все-таки механизм для [subj]. Проверил, работает. Надежно защищает от ошибок с null во время компиляции, а не исполнения. Выглядит это вот так, приходится делать fint() ушами на каждом параметре. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
Хотелось бы без финта, Оракла это запрещает на уровне концепций PL/SQL, поэтому это лучшее что есть или будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2020, 23:38 |
|
Запретить передачу null параметра в PL/SQL procedure
|
|||
---|---|---|---|
#18+
НеофитSQL xtender, > Positive and negative infinity ( generated only by importing from an Oracle Database, Version 5 ) Извините, я вовремя не прочитал что это невозможно, поэтому уже сделал в SQL+. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2020, 00:38 |
|
Запретить передачу null параметра в PL/SQL procedure
|
|||
---|---|---|---|
#18+
НеофитSQL fint ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2020, 00:42 |
|
Запретить передачу null параметра в PL/SQL procedure
|
|||
---|---|---|---|
#18+
мимо (там овраг), но вам туда можно ©С. Альтов ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2020, 00:45 |
|
Запретить передачу null параметра в PL/SQL procedure
|
|||
---|---|---|---|
#18+
xtender НеофитSQL fint Помню это решение. Оно запрещает передачу константы null. Но как-то сложно. Там достаточно параметр объявить SIMPLE_INTEGER, будет лучше и без мороки. К сожалению, такое простое решение обходится неинизиализированной переменной. Код: plsql 1. 2. 3.
Мое решение это не позволяет. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2020, 01:09 |
|
Запретить передачу null параметра в PL/SQL procedure
|
|||
---|---|---|---|
#18+
НеофитSQL Проверил, работает. Надежно защищает от ошибок с null во время компиляции, а не исполнения. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2020, 01:16 |
|
Запретить передачу null параметра в PL/SQL procedure
|
|||
---|---|---|---|
#18+
НеофитSQL Мое решение это не позволяет. Код: plsql 1. 2. 3. 4.
компилятор тоже не отловит ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2020, 01:18 |
|
Запретить передачу null параметра в PL/SQL procedure
|
|||
---|---|---|---|
#18+
Вообще-то в моем решении fint() это функция, но вы совершенно правы, там null поймается только в момент выполнения. Получается что я изучил создание объектов и методы подавления автоматических конструкторов совершенно напрасно :) С учетом последнего комментария, овчинка выделки не стоила. Нужно остановиться на параметре типа SIMPLE_INTEGER, и ждать пока кто-то напишет линт для выдачи предупреждений типа "обнуляемое выражение передалось в параметр, который не обнуляемый". ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2020, 01:50 |
|
|
start [/forum/topic.php?fid=52&msg=40005011&tid=1880836]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
27ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
others: | 299ms |
total: | 406ms |
0 / 0 |