|
Запретить передачу null параметра в PL/SQL procedure
|
|||
---|---|---|---|
#18+
booby AmKad ... Если ты же ты хотел туда передать нулевой указатель nullptr (по смыслу наиболее близкое значение к ораколовому null)... Вы чё, белены объелись? Расскажи, из какой ноздри таку бредятину доставать надо? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2020, 10:31 |
|
Запретить передачу null параметра в PL/SQL procedure
|
|||
---|---|---|---|
#18+
AmKad booby пропущено... Вы чё, белены объелись? Расскажи, из какой ноздри таку бредятину доставать надо? Правильно ли я понял, что вы утверждаете буквально следующее: При объявлении в разделе деклараций процедуры/функции/анонимного блока переменной типа, например, pls_integer, на стеке выделяется память не под значение для этой переменной, а всегда и обязательно под адрес к выделяемому в куче значению? И значение Null в Pl/SQL всегда опознается по нулевому значению этого адреса? Я, правда, не знаю, как оно на самом деле, расскажите. Я свою белену закатаю в трубочку, если вы как-то сможете обосновать своё суждение. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2020, 11:01 |
|
Запретить передачу null параметра в PL/SQL procedure
|
|||
---|---|---|---|
#18+
кстати, даже если на самом деле используется любая форма косвенности, это означает лишь то, что что получение нуля в качестве адреса в параметре в PL/SQL невозможно в принципе. Поэтому, и в таком случае тоже, аналогия с передачей nullptr в параметр в С++ - некорректна. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2020, 11:22 |
|
Запретить передачу null параметра в PL/SQL procedure
|
|||
---|---|---|---|
#18+
booby, имхо в pl/sql есть признак на null различает же он как-то null и '' пустую строку ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2020, 11:25 |
|
Запретить передачу null параметра в PL/SQL procedure
|
|||
---|---|---|---|
#18+
Stax booby, ... различает же он как-то null и '' пустую строку ..... stax я уже не помню, где он их на самом деле различает. Но право вдруг, когда-нибудь, начать повсеместно различать - точно за собой оставляет, даже если не будет делать так никогда. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2020, 11:34 |
|
Запретить передачу null параметра в PL/SQL procedure
|
|||
---|---|---|---|
#18+
В каждом языке есть свои особенности и их нужно учитывать при написании кода, однако воевать с ними непродуктивно и бессмысленно. Stax null и '' пустую строку Ну зачем ты это упомянул, сейчас начнется по 100500 кругу ... ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2020, 11:34 |
|
Запретить передачу null параметра в PL/SQL procedure
|
|||
---|---|---|---|
#18+
AmKad, Подумай хорошенько... Посмотри контекст обсуждения, внимательно посмотри мой пример и еще раз подумай... Зы. Свои утверждения тоже хорошенько обдумай. Booby кое о чем уже намекал ещё до появления тебя в теме. Не вынуждай комментировать твои измышлизмы... Зы2. Пассаж про "мой" компилятор мне понравился ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2020, 11:36 |
|
Запретить передачу null параметра в PL/SQL procedure
|
|||
---|---|---|---|
#18+
НеофитSQL, вот лобовое решение create or replace function MyAdd( a in integer, b in integer ) return integer is begin if a is null or b is null then raise_application_error(-20999,'Не заданы значения параметра'); end if; return a+b; end; / select MyAdd(1,2) from dual; select MyAdd(1,null) from dual; ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2020, 11:54 |
|
Запретить передачу null параметра в PL/SQL procedure
|
|||
---|---|---|---|
#18+
Stax booby, имхо в pl/sql есть признак на null различает же он как-то null и '' пустую строку ..... stax Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Код: plsql 1. 2. 3. 4.
Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Код: plsql 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2020, 12:03 |
|
Запретить передачу null параметра в PL/SQL procedure
|
|||
---|---|---|---|
#18+
booby Правильно ли я понял, что вы утверждаете буквально следующее: При объявлении в разделе деклараций процедуры/функции/анонимного блока переменной типа, например, pls_integer, на стеке выделяется память не под значение для этой переменной, а всегда и обязательно под адрес к выделяемому в куче значению? На контекст моего утверждение явно указывает мой вопрос, адресованный Вам. Ну, а смысл появления nullptr в c+11, как более безопасная альтернатива NULL, думаю Вам хорошо известен. xtender AmKad, Подумай хорошенько... Посмотри контекст обсуждения, внимательно посмотри мой пример и еще раз подумай... xtender Зы2. Пассаж про "мой" компилятор мне понравился ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2020, 12:04 |
|
Запретить передачу null параметра в PL/SQL procedure
|
|||
---|---|---|---|
#18+
AmKad Ты передал честный int с нулевым значением в int-параметр функции. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39.
... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2020, 12:14 |
|
Запретить передачу null параметра в PL/SQL procedure
|
|||
---|---|---|---|
#18+
Les, НеофитSQL Хочется запретить передачу null в качестве параметров на стадии компиляции В эксепшн автор и сам уже умеет ) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2020, 12:15 |
|
Запретить передачу null параметра в PL/SQL procedure
|
|||
---|---|---|---|
#18+
xtender AmKad Ты передал честный int с нулевым значением в int-параметр функции. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39.
... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2020, 12:33 |
|
Запретить передачу null параметра в PL/SQL procedure
|
|||
---|---|---|---|
#18+
xtender Ты вообще понимаешь разницу run-time/compile time? С большой долей вероятности автор топика имел ввиду примитивные типы данных в некоторых распространенных языках программирования, которые действительно не могут быть null и соответствие типов проверяется в большинстве случаев при компиляции. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2020, 12:34 |
|
Запретить передачу null параметра в PL/SQL procedure
|
|||
---|---|---|---|
#18+
AmKad, О том, что booby написал ещё в самом начале: про сишные UB куда ни плюнь...сравни сишный "int x;" и pl/sql "x int;" Уж что-что, а си и даже современные плюсы сюда в контекст пихать мягко говоря не стоило... ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2020, 12:46 |
|
Запретить передачу null параметра в PL/SQL procedure
|
|||
---|---|---|---|
#18+
graycode xtender Ты вообще понимаешь разницу run-time/compile time? С большой долей вероятности автор топика имел ввиду примитивные типы данных в некоторых распространенных языках программирования, которые действительно не могут быть null и соответствие типов проверяется в большинстве случаев при компиляции. Зы. Пример ошибки времени компиляции выше был: 22203366 ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2020, 12:51 |
|
Запретить передачу null параметра в PL/SQL procedure
|
|||
---|---|---|---|
#18+
сорри, был глюк какойто, д.б. так: AmKad ... На контекст моего утверждение явно указывает мой вопрос, адресованный Вам. Вы задали мне такой вопрос: AmKad..попробуйте ответить на вопрос: какой способ передачи параметров в функцию в С/С++ (без учета наличия перегрузок) позволяет логически сделать параметр необязательным (непроинициализированным) и в вызываемой функции определить, был ли передан (проинициализирован) тот или иной параметр Ответа на него я не знаю , в частности потому, что вообще отношения ни C, ни С++ не имею. Технически, "в стиле C/C++", на уровне подсистемы передачи параметров, это можно было бы делать передачей как раз nullptr для пропущенного параметра, изолированного в промежуточную ссылочную переменную. Однако Вы, задавая такой такой вопрос, вероятно не просто знаете на него правильный ответ, но и понимаете, как он обосновывает утверждение о том, что nullptr "по смыслу наиболее близкое значение к ораколовому null". Что точно вы вы хотели сказать своим ответом в виде вопроса, если перевести его в утвердительное предложение? AmKad ... ... Ну, а смысл появления nullptr в c+11, как более безопасная альтернатива NULL, думаю Вам хорошо известен. В контексте данного конкретного топика это выглядит вообще как весёлая шутка: Т.е., перевожу: С++ развивается от C в направлении к Ada, в смысле непрерывного укрепления строгости системы типов, а PL/SQL с рождения продрейфовал от Ada к "процедурным расширениям SQL", сразу и явно пожертвовав строгостью системы типов, путём внедрения встроенного преобразования типов для значений. Спасибо, посмеялся вместе с Вами. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2020, 13:19 |
|
Запретить передачу null параметра в PL/SQL procedure
|
|||
---|---|---|---|
#18+
xtender AmKad, О том, что booby написал ещё в самом начале: про сишные UB куда ни плюнь...сравни сишный И проблему неинициализированных переменных нельзя назвать чисто сишной. Хотя, уверен, твой C++ компилятор при включении соответствующих опций-ворнингов обязательно укажет на них. Мой MSVC даже не дает компилировать такой кусок кода. Если мы хотим продемонстрировать UB через передачу параметров по ссылке, можно постараться придумать куда более общий пример c разыменованием указателя. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32.
... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2020, 13:29 |
|
Запретить передачу null параметра в PL/SQL procedure
|
|||
---|---|---|---|
#18+
AmKad, Про NULL в первом примере было вообще о понимании разницы null в pl/sql и в сях и с намёком про c++11 ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2020, 13:37 |
|
Запретить передачу null параметра в PL/SQL procedure
|
|||
---|---|---|---|
#18+
booby Ответа на него я не знаю , в частности потому, что вообще отношения ни C, ни С++ не имею. Дополнение: в С+11 появился более безопасный способ указать нулевой указатель: nullptr. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2020, 13:38 |
|
Запретить передачу null параметра в PL/SQL procedure
|
|||
---|---|---|---|
#18+
AmKad, И как это должно быть связано с утверждением об эквивалентности нулевого указателя и Null, с учетом того (если я правильно понял ваши отговорки), что вы уже не готовы утверждать, что по адресу, ассоциированному с переменной лежит не значение, а ссылка на него. Кстати, это правда мог бы быть простой вариант реализации за малую цену общей производительности. Но даже, если это на самом деле так, и Вы абсолютно правы в своем "почти приравнивании" nullptr в C++ и Null в pl/sql, а белены объелся именно я, это не отменяет того, что в логическом отношении PL/SQL-Null - это самостоятельное значение. Вся математика должна единообразно интерпретировать значение нулевого указателя, во первых, а во вторых, это не создает возможности передать нулевой указатель в ссылочном IN-параметре. В этом смысле сравнение там, где вы именно именно в качестве передаваемого параметра nullptr используете как аналогию, для меня остаётся как выглядящее неприемлемым. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2020, 15:11 |
|
Запретить передачу null параметра в PL/SQL procedure
|
|||
---|---|---|---|
#18+
booby, В оракле в случае переменных простых типов null - это спец значение 0xFF. Объекты же как и коллекции в pl/sql тоже могут быть неинициализированными ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2020, 15:25 |
|
Запретить передачу null параметра в PL/SQL procedure
|
|||
---|---|---|---|
#18+
xtender booby, ...Объекты же как и коллекции в pl/sql тоже могут быть неинициализированными если подразумевается, имеющими значение 0xFF, то в русском языке это называется - всегда инициализированы ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2020, 15:31 |
|
Запретить передачу null параметра в PL/SQL procedure
|
|||
---|---|---|---|
#18+
xtender В оракле в случае переменных простых типов null - это спец значение 0xFF. А вот тут неясно что под капотом. Кто знает может как в OCI - indicator variable в придачу. SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2020, 15:31 |
|
|
start [/forum/topic.php?fid=52&msg=40001995&tid=1880836]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
179ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
others: | 10ms |
total: | 277ms |
0 / 0 |