|
|
|
Неожиданности select ... into в ХП
|
|||
|---|---|---|---|
|
#18+
Пользую FB уже пару лет, но только сейчас обнаружил такую вещь: если в результате выполнения select ... into ... под условие не попадает ни одной строки, в переменных из предложения into остаются те же значения, что были и до выполнения этого оператора, а не заносятся null-ы. (Из-за моего этого заблуждения одна сложная ХП работала неверно, только когда стал разбираться, понял в чем дело.) Поискал в доках, где описана эта особенность, но не нашел. Если не трудно, ткните в то место, где про это сказано. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2006, 15:59:46 |
|
||
|
Неожиданности select ... into в ХП
|
|||
|---|---|---|---|
|
#18+
Да, забыл сказать: сервер FB 1.5.3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2006, 16:14:58 |
|
||
|
Неожиданности select ... into в ХП
|
|||
|---|---|---|---|
|
#18+
Вообще-то поведение очевидное и предсказуемое. В BOL для M$ SQL это точно описано, а вот искать и распаковывать доку для Interbase мне лениво, ищи сам, думаю что это либо в синтаксисе SELECT'а описано, либо в разделе по ХП. В общем, пилите, Шура... Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2006, 17:14:46 |
|
||
|
Неожиданности select ... into в ХП
|
|||
|---|---|---|---|
|
#18+
_avzПользую FB уже пару лет, но только сейчас обнаружил такую вещь: если в результате выполнения select ... into ... под условие не попадает ни одной строки, в переменных из предложения into остаются те же значения, что были и до выполнения этого оператора, а не заносятся null-ы.Так и должно быть и много раз говорилось: инициализируйте переменные перед циклом. _avzПоискал в доках, где описана эта особенность, но не нашел. Если не трудно, ткните в то место, где про это сказано.В доках это явно может и не описано, но for select - это цикл. Соответственно если у тебя цикл (while к примеру) не срабатывает, то выполнение просто передается дальше - что ты и наблюдаешь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2006, 17:35:10 |
|
||
|
Неожиданности select ... into в ХП
|
|||
|---|---|---|---|
|
#18+
пример примитивный: if условие then a:=5; если условие = false, чему будет равно a? Правильно. Тому значению, которое до этого было в a. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2006, 17:38:21 |
|
||
|
Неожиданности select ... into в ХП
|
|||
|---|---|---|---|
|
#18+
Да уж... Совсем проще некуда объяснил... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2006, 17:49:52 |
|
||
|
Неожиданности select ... into в ХП
|
|||
|---|---|---|---|
|
#18+
Можно ли гарантировать, что при входе в триггер/процедуру переменные инициализируются в NULL? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2006, 19:56:09 |
|
||
|
Неожиданности select ... into в ХП
|
|||
|---|---|---|---|
|
#18+
В моем случае (очень упрощенно) было так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Просто мне казалось очевидным, что если записи не найдется xxx_id будет null. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2006, 20:09:42 |
|
||
|
Неожиданности select ... into в ХП
|
|||
|---|---|---|---|
|
#18+
"Гаджимурадов Рустам" <nospam@sql.ru> сообщил/сообщила в новостях следующее: news:2515345@sql.ru... .... > В доках это явно может и не описано, но for select - это цикл. Соответственно если у тебя цикл (while к примеру) не срабатывает, то выполнение просто передается дальше - что ты и наблюдаешь. Не о "for select..." шла речь, а о простом "select into param_list ". Если record_count = 0, то param_list не меняется. Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2006, 20:44:48 |
|
||
|
Неожиданности select ... into в ХП
|
|||
|---|---|---|---|
|
#18+
SextonМожно ли гарантировать, что при входе в триггер/процедуру переменные инициализируются в NULL? В FB сервер это гарантирует. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2006, 21:50:39 |
|
||
|
Неожиданности select ... into в ХП
|
|||
|---|---|---|---|
|
#18+
mvНе о "for select..." шла речь, а о простом "select into param_list ". Если record_count = 0, то param_list не меняется. Я думал, что люди это выучивают на первом месяце работы с сервером :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2006, 21:51:35 |
|
||
|
Неожиданности select ... into в ХП
|
|||
|---|---|---|---|
|
#18+
dimitr mvНе о "for select..." шла речь, а о простом "select into param_list ". Если record_count = 0, то param_list не меняется. Я думал, что люди это выучивают на первом месяце работы с сервером :-)Надо бы прописать это в доку... Во избежание. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2006, 00:32:35 |
|
||
|
Неожиданности select ... into в ХП
|
|||
|---|---|---|---|
|
#18+
mv"Гаджимурадов Рустам" <nospam@sql.ru> сообщил/сообщила в новостях следующее: news:2515345@sql.ru... .... > В доках это явно может и не описано, но for select - это цикл. Соответственно если у тебя цикл (while к примеру) не срабатывает, то выполнение просто передается дальше - что ты и наблюдаешь. Не о "for select..." шла речь, а о простом "select into param_list ". Если record_count = 0, то param_list не меняется.По большому счету "select into param_list" это тот же "for select" только выполняющийся один раз, хотя как это реализовано в коде не знаю - пока ДЕ здесь пусть как раз и просветит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2006, 00:34:33 |
|
||
|
Неожиданности select ... into в ХП
|
|||
|---|---|---|---|
|
#18+
именно так и реализовано. Цикл с ограничением сингулярности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2006, 07:29:26 |
|
||
|
Неожиданности select ... into в ХП
|
|||
|---|---|---|---|
|
#18+
dimitrЯ думал, что люди это выучивают на первом месяце работы с сервером :-) Да, знаю, двойка мне за незнание очевидных (как оказалось) вещей. Кстати, задумавшись, как же я раньше на это не наступил, стал смотреть код хранимок во всех своих разработанных базах. Самое смешное, что я везде в таких циклах инициализировал такие переменные null-ами, особо не задумываясь. А в последнем проекте, видать после полугодового перерыва, потерял эту привычку... Ладно, прощу прощения за идиотский вопрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2006, 08:12:13 |
|
||
|
Неожиданности select ... into в ХП
|
|||
|---|---|---|---|
|
#18+
_avzя везде в таких циклах инициализировал такие переменные null-ами при возврате запросом NULLа это бы тебя не спасло. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2006, 08:27:49 |
|
||
|
Неожиданности select ... into в ХП
|
|||
|---|---|---|---|
|
#18+
dimitr при возврате запросом NULLа это бы тебя не спасло. В основном речь идет о выборке вместе с ПК, а потом делается проверка переменной именно для ПК на is null. ПК null-ом быть не может, поэтому все нормально :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2006, 08:47:41 |
|
||
|
Неожиданности select ... into в ХП
|
|||
|---|---|---|---|
|
#18+
dimitr SextonМожно ли гарантировать, что при входе в триггер/процедуру переменные инициализируются в NULL? В FB сервер это гарантирует. Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2006, 08:52:07 |
|
||
|
Неожиданности select ... into в ХП
|
|||
|---|---|---|---|
|
#18+
_avz dimitr при возврате запросом NULLа это бы тебя не спасло. В основном речь идет о выборке вместе с ПК, а потом делается проверка переменной именно для ПК на is null. ПК null-ом быть не может, поэтому все нормально :-) Более корректное решение это проверять row_count на 0, правильно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2006, 09:04:24 |
|
||
|
Неожиданности select ... into в ХП
|
|||
|---|---|---|---|
|
#18+
_avzПользую FB уже пару лет, но только сейчас обнаружил такую вещь: Мне повезло: я столкнулся с этим на первом месяце работы :) Вообще-то ситуация такая же, как и в, скажем, Дельфи. Если переменной не задавать значение, оно остается прежним. И здесь: если селект не возвращает запись, в переменные никак нельзя записать нулл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2006, 10:31:34 |
|
||
|
Неожиданности select ... into в ХП
|
|||
|---|---|---|---|
|
#18+
_avzБолее корректное решение это проверять row_count на 0, правильно? При селектах row_count возвращает 0 насколько я знаю... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2006, 10:39:09 |
|
||
|
Неожиданности select ... into в ХП
|
|||
|---|---|---|---|
|
#18+
в смысле всегда 0, независимо от количества выбранных строк ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2006, 10:40:12 |
|
||
|
Неожиданности select ... into в ХП
|
|||
|---|---|---|---|
|
#18+
to _spy_ В 2-ке ни фига ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2006, 10:47:33 |
|
||
|
Неожиданности select ... into в ХП
|
|||
|---|---|---|---|
|
#18+
FreemanZAVto _spy_ В 2-ке ни фига Спасибо, буду знать, 2-ку еще не юзал. P.S. Но у автора 1.5.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2006, 10:57:25 |
|
||
|
|

start [/forum/topic.php?fid=40&fpage=103&tid=1563888]: |
0ms |
get settings: |
12ms |
get forum list: |
21ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
353ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
64ms |
get tp. blocked users: |
2ms |
| others: | 216ms |
| total: | 689ms |

| 0 / 0 |
