powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Неожиданности select ... into в ХП
25 сообщений из 41, страница 1 из 2
Неожиданности select ... into в ХП
    #33639702
Фотография _avz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пользую FB уже пару лет, но только сейчас обнаружил такую вещь: если в результате выполнения select ... into ... под условие не попадает ни одной строки, в переменных из предложения into остаются те же значения, что были и до выполнения этого оператора, а не заносятся null-ы. (Из-за моего этого заблуждения одна сложная ХП работала неверно, только когда стал разбираться, понял в чем дело.) Поискал в доках, где описана эта особенность, но не нашел. Если не трудно, ткните в то место, где про это сказано.
...
Рейтинг: 0 / 0
Неожиданности select ... into в ХП
    #33639712
Фотография _avz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, забыл сказать: сервер FB 1.5.3.
...
Рейтинг: 0 / 0
Неожиданности select ... into в ХП
    #33639752
Фотография Kull Damned
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще-то поведение очевидное и предсказуемое. В BOL для M$ SQL это точно описано, а вот искать и распаковывать доку для Interbase мне лениво, ищи сам, думаю что это либо в синтаксисе SELECT'а описано, либо в разделе по ХП. В общем, пилите, Шура...
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Неожиданности select ... into в ХП
    #33639761
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_avzПользую FB уже пару лет, но только сейчас обнаружил такую вещь: если в результате выполнения select ... into ... под условие не попадает ни одной строки, в переменных из предложения into остаются те же значения, что были и до выполнения этого оператора, а не заносятся null-ы.Так и должно быть и много раз говорилось: инициализируйте переменные перед циклом.
_avzПоискал в доках, где описана эта особенность, но не нашел. Если не трудно, ткните в то место, где про это сказано.В доках это явно может и не описано, но for select - это цикл. Соответственно если у тебя цикл (while к примеру) не срабатывает, то выполнение просто передается дальше - что ты и наблюдаешь.
...
Рейтинг: 0 / 0
Неожиданности select ... into в ХП
    #33639766
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пример примитивный:

if условие then
a:=5;

если условие = false, чему будет равно a? Правильно. Тому значению, которое до этого было в a.
...
Рейтинг: 0 / 0
Неожиданности select ... into в ХП
    #33639772
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да уж... Совсем проще некуда объяснил...
...
Рейтинг: 0 / 0
Неожиданности select ... into в ХП
    #33639855
Sexton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно ли гарантировать, что при входе в триггер/процедуру переменные инициализируются в NULL?
...
Рейтинг: 0 / 0
Неожиданности select ... into в ХП
    #33639870
Фотография _avz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В моем случае (очень упрощенно) было так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
for select ...
  // ищем, была ли запись с таким id в таблице
   xxx_id = null;     --  оказывается это делать обязательно, иначе останется 
                         --  значение из предыдущего цикла
   select .... into :xxx_id;
   if (xxx_id is null) then
   begin
     ...
   end
   else begin
     ...
   end
  ...

Просто мне казалось очевидным, что если записи не найдется xxx_id будет null.
...
Рейтинг: 0 / 0
Неожиданности select ... into в ХП
    #33639894
Фотография mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Гаджимурадов Рустам" <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
...
Рейтинг: 0 / 0
Неожиданности select ... into в ХП
    #33639927
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SextonМожно ли гарантировать, что при входе в триггер/процедуру переменные инициализируются в NULL?
В FB сервер это гарантирует.
...
Рейтинг: 0 / 0
Неожиданности select ... into в ХП
    #33639929
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mvНе о "for select..." шла речь, а о простом "select into param_list ".
Если record_count = 0, то param_list не меняется.
Я думал, что люди это выучивают на первом месяце работы с сервером :-)
...
Рейтинг: 0 / 0
Неожиданности select ... into в ХП
    #33640022
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitr mvНе о "for select..." шла речь, а о простом "select into param_list ".
Если record_count = 0, то param_list не меняется.
Я думал, что люди это выучивают на первом месяце работы с сервером :-)Надо бы прописать это в доку... Во избежание.
...
Рейтинг: 0 / 0
Неожиданности select ... into в ХП
    #33640025
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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" только выполняющийся один раз,
хотя как это реализовано в коде не знаю - пока ДЕ здесь пусть как раз и просветит.
...
Рейтинг: 0 / 0
Неожиданности select ... into в ХП
    #33640105
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
именно так и реализовано. Цикл с ограничением сингулярности.
...
Рейтинг: 0 / 0
Неожиданности select ... into в ХП
    #33640127
Фотография _avz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrЯ думал, что люди это выучивают на первом месяце работы с сервером :-)

Да, знаю, двойка мне за незнание очевидных (как оказалось) вещей.
Кстати, задумавшись, как же я раньше на это не наступил, стал смотреть код хранимок во всех своих разработанных базах. Самое смешное, что я везде в таких циклах инициализировал такие переменные null-ами, особо не задумываясь. А в последнем проекте, видать после полугодового перерыва, потерял эту привычку... Ладно, прощу прощения за идиотский вопрос.
...
Рейтинг: 0 / 0
Неожиданности select ... into в ХП
    #33640143
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_avzя везде в таких циклах инициализировал такие переменные null-ами

при возврате запросом NULLа это бы тебя не спасло.
...
Рейтинг: 0 / 0
Неожиданности select ... into в ХП
    #33640158
Фотография _avz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitr
при возврате запросом NULLа это бы тебя не спасло.
В основном речь идет о выборке вместе с ПК, а потом делается проверка переменной именно для ПК на is null. ПК null-ом быть не может, поэтому все нормально :-)
...
Рейтинг: 0 / 0
Неожиданности select ... into в ХП
    #33640160
Sexton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitr SextonМожно ли гарантировать, что при входе в триггер/процедуру переменные инициализируются в NULL?
В FB сервер это гарантирует.
Спасибо
...
Рейтинг: 0 / 0
Неожиданности select ... into в ХП
    #33640172
Фотография _avz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_avz dimitr
при возврате запросом NULLа это бы тебя не спасло.
В основном речь идет о выборке вместе с ПК, а потом делается проверка переменной именно для ПК на is null. ПК null-ом быть не может, поэтому все нормально :-)
Более корректное решение это проверять row_count на 0, правильно?
...
Рейтинг: 0 / 0
Неожиданности select ... into в ХП
    #33640393
Фотография S.G.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_avzПользую FB уже пару лет, но только сейчас обнаружил такую вещь: Мне повезло: я столкнулся с этим на первом месяце работы :)
Вообще-то ситуация такая же, как и в, скажем, Дельфи. Если переменной не задавать значение, оно остается прежним. И здесь: если селект не возвращает запись, в переменные никак нельзя записать нулл.
...
Рейтинг: 0 / 0
Неожиданности select ... into в ХП
    #33640428
_spy_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_avzБолее корректное решение это проверять row_count на 0, правильно?
При селектах row_count возвращает 0 насколько я знаю...
...
Рейтинг: 0 / 0
Неожиданности select ... into в ХП
    #33640434
_spy_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в смысле всегда 0, независимо от количества выбранных строк
...
Рейтинг: 0 / 0
Неожиданности select ... into в ХП
    #33640450
FreemanZAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to _spy_
В 2-ке ни фига
...
Рейтинг: 0 / 0
Неожиданности select ... into в ХП
    #33640490
_spy_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FreemanZAVto _spy_
В 2-ке ни фига
Спасибо, буду знать, 2-ку еще не юзал.
P.S. Но у автора 1.5.3
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Неожиданности select ... into в ХП
    #38553157
Johnnyyy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
если в примерах выше переменная не обnull'яется
то вот новая неожиданность:

Код: plsql
1.
<перем> = (select ... from tabl1);



в переменную пишется null, если записи не найдены :)
...
Рейтинг: 0 / 0
25 сообщений из 41, страница 1 из 2
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Неожиданности select ... into в ХП
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]