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

start [/forum/topic.php?fid=40&mobile=1&tid=1563888]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
217ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
| others: | 219ms |
| total: | 529ms |

| 0 / 0 |
