powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / значение Null в цикле
14 сообщений из 14, страница 1 из 1
значение Null в цикле
    #38821866
Фотография Mikhail Tchervonenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброе время суток,

постоянно приходится предварительно инициализировать переменную в циклах
к примеру
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
declare variable v_aa integer;
declare variable v_bb integer;
....

-- начало цикла

....
v_bb = 0; -- если не приравнять здесь сначала к 0 то при table2.bb is null оператор into не занесет туда null и там останется значение предведущей итерации
 
select table1.aa, table2.bb from table1 left join table2 on table2.ww = table1.dd into :v_aa, :v_bb;

....

-- конец цикла


если выботка возвращает в table2.bb значение null то into bb не производит инициализацию значением null и оставляет значение предведущей итерации. Иногда просто забываешь об этом, и вылазят косяки. Есть какой то простой способ борьбы с этим явлением. Хотелось бы что бы если возвращается null то и into тоже заносил его в переменную.

Спасибо
...
Рейтинг: 0 / 0
значение Null в цикле
    #38821873
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mikhail Tchervonenko,

если select ничего не возвращает, переменная остается в том же значении, что и была раньше
если select возвращает запись, в переменную записывается полученное значение (значение, или null, то, что было в записи).
...
Рейтинг: 0 / 0
значение Null в цикле
    #38821876
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mikhail Tchervonenko,

буквально

if a = 1 then
b := 5

если a = 0, что будет в b?
...
Рейтинг: 0 / 0
значение Null в цикле
    #38821881
Фотография Mikhail Tchervonenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvMikhail Tchervonenko,

если select ничего не возвращает, переменная остается в том же значении, что и была раньше
если select возвращает запись, в переменную записывается полученное значение (значение, или null, то, что было в записи).
в данном случае select возвращает запись а join нет. Логично было бы тут писать null в into.
...
Рейтинг: 0 / 0
значение Null в цикле
    #38821894
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mikhail TchervonenkoЛогично было бы тут писать null в into.
Нет, не логично. Посмотри ещё раз, внимательно:
Код: pascal
1.
2.
for i := 1 to 0 do
   a := 5;


Какое значение должна получить переменная а после такого цикла?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
значение Null в цикле
    #38821911
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mikhail Tchervonenkoв данном случае select возвращает запись а join нет.
чушь. join это тоже select. он либо возвращает запись, либо нет. а дальше - см. выше.
...
Рейтинг: 0 / 0
значение Null в цикле
    #38821923
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
значение Null в цикле
    #38822048
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv> join это тоже select. он либо возвращает запись, либо нет.

Только вот беда - у него left join.
Скорее всего он просто в трёх
соснах запутался.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
значение Null в цикле
    #38822053
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамСкорее всего он просто в трёх соснах запутался.
Да что толку гадать-то? Пока не покажет полный воспроизводимый пример, это стук в подвале.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
значение Null в цикле
    #38822073
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovГаджимурадов РустамСкорее всего он просто в трёх соснах запутался.
Да что толку гадать-то? Пока не покажет полный воспроизводимый пример, это стук в подвале.


Он о том, что:

Код: sql
1.
2.
3.
a=null;

select a from t into :a;


при НЕвозвращении не одной записи останется NULL либо ПРЕдыдущее значение при:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
declare a integer;
declare b integer;

b=0;
for select a from t1 into :a do
 begin
  for select b from t2 into :b do  b=coalesce(a,0);
  suspend;
 end




Ну или вроде того ;)
...
Рейтинг: 0 / 0
значение Null в цикле
    #38822080
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMasterОн о том, что:
Да, я тоже так думал сначала, но вот Рустам обратил внимание на левый джоин и что-то меня
взяли сомнения...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
значение Null в цикле
    #38822081
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMaster> Он о том, что:

А еще есть join.
А еще есть слова, что select не пустой.
А еще есть jpin который left, а не inner.
И это ещё я топик толком не читал...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
значение Null в цикле
    #38822085
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

ему же популярно сказали - нет записи = null. есть запись - будет значение. Если там null, будет null.
отличить нельзя, и left join тут совершенно ни при чем. Обычный select точно так же вернет null из столбца с null.
все ответы уже даны, включая row_count.
...
Рейтинг: 0 / 0
значение Null в цикле
    #38822165
Фотография roadster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovDarkMasterОн о том, что:
Да, я тоже так думал сначала, но вот Рустам обратил внимание на левый джоин и что-то меня
взяли сомнения...код для примера, скорее всего есть в реальности ещё и where секция, которая для table1 не выдаёт ни одной записи, соответственно нечего соединять с table2, так что kdv прав.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / значение Null в цикле
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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