powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Неустановка локальной переменной при пустом наборе: стандарт, фича или баг?
25 сообщений из 86, страница 2 из 4
Неустановка локальной переменной при пустом наборе: стандарт, фича или баг?
    #39594178
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv,

ну значит там разобрались что я имел ввиду и поправили
...
Рейтинг: 0 / 0
Неустановка локальной переменной при пустом наборе: стандарт, фича или баг?
    #39594179
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,
...
Рейтинг: 0 / 0
Неустановка локальной переменной при пустом наборе: стандарт, фича или баг?
    #39594182
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv> какого, нафиг, перевода? русский LR первичен

:)

Русский LR (может, не конечный, но его куски и более ранние LR)
были как раз переводами с английских LRU. В любом случае, надо
о контенте думать, а не кто у кого перевёл неверно.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Неустановка локальной переменной при пустом наборе: стандарт, фича или баг?
    #39594188
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам,

не могло быть этого в LRU, ибо эта часть в FB не менялась
...
Рейтинг: 0 / 0
Неустановка локальной переменной при пустом наборе: стандарт, фича или баг?
    #39594189
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shalamyansky,

я не знаю, где у вас "интуитивно по синтаксису ожидается". Тут уже отписались на эту тему, но я добавлю объяснение

if a = 5 then
b:=10;

если a = 4 - что будет в переменной b? Вот тут абсолютно так же - если записей не было, то ничего и не присваивается переменной.

p.s. да, в доке, в разделе INTO, это должно быть написано, потому что этот вопрос реально задолбал.
И я у себя про него отписывал - раздел "обработка данных..." в http://www.ibase.ru/sp_call/
...
Рейтинг: 0 / 0
Неустановка локальной переменной при пустом наборе: стандарт, фича или баг?
    #39594218
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис> не могло быть этого в LRU, ибо эта часть в FB не менялась

Именно этот абзац - ХЗ. Аналогичные куски текста есть, например,
в описании ES и если вы не пользуетесь копипастом (ручным или
профессиональным в соотв. ПО) - то делаете что-то не так.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Неустановка локальной переменной при пустом наборе: стандарт, фича или баг?
    #39594237
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам,

ну ES то был сделан в Firebird, а SELECT в процедурах со времён IB
...
Рейтинг: 0 / 0
Неустановка локальной переменной при пустом наборе: стандарт, фича или баг?
    #39594268
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис> ну ES то был сделан в Firebird, а SELECT в процедурах со времён IB

И именно поэтому он есть в LRU и поведение синглтона в обоих
случаях идентично (по крайней мере, в обсуждаемом контексте).
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Неустановка локальной переменной при пустом наборе: стандарт, фича или баг?
    #39594275
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам,

исправлю
...
Рейтинг: 0 / 0
Неустановка локальной переменной при пустом наборе: стандарт, фича или баг?
    #39594278
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WildSeryКстати, в документации к Postgre, там, где into не табличный, явно написано, что into :var присваивает null, если выборка пустая.

Какие жалкие людишки копаются в этом постгрессе.

Нет чтобы обозвать пользователей дураками и лентяями и послать их на три полярные экспедиции
...
Рейтинг: 0 / 0
Неустановка локальной переменной при пустом наборе: стандарт, фича или баг?
    #39594295
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чччДВ документации фраза есть:

Стр. 295Простой оператор SELECT может быть использован в PSQL, только если он возвращает
единственную строку, то есть, если это запрос типа синглтон (singleton).

Тут просто складывают яблоки с апельсинами.

На самом деле есть ДВА способа использовать бесцикловый SELECT внутри PSQL, и у них вообще говоря возможно разное поведение при "особых случаях".

Я два раза уже называл эти разные способы выше

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
execute block returns (i integer) as
begin
  i = ( select rdb$relation_id from rdb$database where 1<2 );
  suspend;
end

execute block returns (i integer) as
begin
  i = ( select rdb$relation_id from rdb$database where 1>2 );
  suspend;
end

execute block returns (i integer) as
begin
  select rdb$relation_id from rdb$database where 1<2 into :i ;
  suspend;
end

execute block returns (i integer) as
begin
  select rdb$relation_id from rdb$database where 1>2 into :i ;
  suspend;
end



А вообще, действительно интересно, что *по стандарту* должно возвращать выражение "(select ....)" если записей нет вообще - NULL или ошибку.
...
Рейтинг: 0 / 0
Неустановка локальной переменной при пустом наборе: стандарт, фича или баг?
    #39594300
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvif a = 5 then
b:=10;

если a = 4 - что будет в переменной b? Вот тут абсолютно так же

Да нет тут никакого "абсолютно так же".

Нету у топикстартера ни цикла, не ветвления, НЕ-ТУ.

Разговор примерно такой:

- Если я зимой на бетон уроню банку с бензином - он загорится?
- Что будет, если ты уронишь в банку с бензином тлеющий окурок, а потом выронишь саму банку? Загорится? Ну вот в твоей случае "абсолютно так же" (С)
...
Рейтинг: 0 / 0
Неустановка локальной переменной при пустом наборе: стандарт, фича или баг?
    #39594307
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arioch,

Тут случай, когда select используется с into, так что ты э... гонишь. :)
...
Рейтинг: 0 / 0
Неустановка локальной переменной при пустом наборе: стандарт, фича или баг?
    #39594312
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WildSeryУ кого стандарт SQL под рукой есть? Там в SELECT INTO что-то сказано по поводу пустых запросов?

В стандарте INTO вообще в другом месте ставится

Но поведение FB в связи с INTO вроде бы правильное, если потмо в стандарте ничего не поменяли

ISO/IEC 9075-2:1999 (E)
14.5 <select statement: single row>
Data manipulation p.665

......

Format
<select statement: single row> ::=
SELECT [ <set quantifier> ] <select list>
INTO <select target list>
<table expression>

.....

<table expression> ::=
<from clause>
[ <where clause> ]
[ <group by clause> ]
[ <having clause> ]

.......

a) If the cardinality of Q is greater than 1 (one), then an exception condition is raised: car-
dinality violation. It is implementation-dependent whether or not SQL-data values are
assigned to the targets identified by the <select target list>.
b) If Q is empty, then no SQL-data values are assigned to any targets identified by the <select
target list>, and a completion condition is raised: no data.
c) Otherwise, values in the row of Q are assigned to their corresponding targets
...
Рейтинг: 0 / 0
Неустановка локальной переменной при пустом наборе: стандарт, фича или баг?
    #39594314
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чччДТут случай, когда select используется с into, так что ты э... гонишь. :)

и что, там от этого цикл вырос? не вырос.
...
Рейтинг: 0 / 0
Неустановка локальной переменной при пустом наборе: стандарт, фича или баг?
    #39594330
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arioch...
a) If the cardinality of Q is greater than 1 (one), then an exception condition is raised: car-
dinality violation. It is implementation-dependent whether or not SQL-data values are
assigned to the targets identified by the <select target list>.
b) If Q is empty, then no SQL-data values are assigned to any targets identified by the <select
target list>, and a completion condition is raised: no data.
c) Otherwise, values in the row of Q are assigned to their corresponding targets

Т.е., поведение правильное, лишь отразить в доке сие требуется.
...
Рейтинг: 0 / 0
Неустановка локальной переменной при пустом наборе: стандарт, фича или баг?
    #39594343
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AriochДа нет тут никакого "абсолютно так же".
Нету у топикстартера ни цикла, не ветвления, НЕ-ТУ.
ну как нету.
если_есть_результат то присвоить_значение_переменной

Соответственно, когда результата_нет , ничего не присваивается.
AriochНет чтобы обозвать пользователей дураками и лентяями и послать их на три полярные экспедиции
я не понимаю, чего ты хочешь. Симонов уже сказал, что документацию поправит. Что еще?
AriochЯ два раза уже называл эти разные способы выше
я не вижу разницы в этих способах. Нет результата - ничего не присваивается. Есть результат - присваивается.
...
Рейтинг: 0 / 0
Неустановка локальной переменной при пустом наборе: стандарт, фича или баг?
    #39594352
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чччД,

угу.

Также и с выражениями вроде бы корректно (хотя я бы распял рас шесть тех, кто стандарт писал. Это явно аннунаки с другой галактики были, найти в нём что-то не вывихнув остатки черепа.... Ну да ладно, пустое).
Но в доке тоже надо отобразить.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
execute block returns (i integer) as
begin
  i = 10;
  i = ( select rdb$relation_id from rdb$database where 1>2 );
--  select rdb$relation_id from rdb$database where 1>2 into :i ;
  suspend;
end

execute block returns (i integer) as
begin
  i = 10;
--  i = ( select rdb$relation_id from rdb$database where 1>2 );
  select rdb$relation_id from rdb$database where 1>2 into :i ;
  suspend;
end



Первое вернёт NULL, а второе - 10.

SQL 1999-2
2) Let SS be a <scalar subquery>.
Case:
a) If the cardinality of SS is greater than 1 (one), then an exception condition is raised: cardi-
nality violation.
b) If the cardinality of SS is 0 (zero), then the value of the <scalar subquery> is the null value .
c) Otherwise, let C be the column of <query expression> simply contained in SS. The value of
SS is the value of C in the unique row of the result of the <scalar subquery>.

Query expressions p.283
...
Рейтинг: 0 / 0
Неустановка локальной переменной при пустом наборе: стандарт, фича или баг?
    #39594355
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WildSery > У кого стандарт SQL под рукой есть? Там в SELECT INTO
WildSery > что-то сказано по поводу пустых запросов?

Сказано, что ничего не присваивать (и соотв. не делать
опуствующие присвоению действия) и не рейзить ошибку.

Arioch> А вообще, действительно интересно, что *по стандарту* должно возвращать
Arioch> выражение "(select ....)" если записей нет вообще - NULL или ошибку.

Null, конечно.

If a <value expression primary> is a <scalar subquery> and the
result of the <subquery> is empty, then the result of the <value
expression primary> is the null value.

Arioch> и что, там от этого цикл вырос? не вырос.

Ты не заметил, что кроме тебя про циклы вообще никто даже не заикался?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Неустановка локальной переменной при пустом наборе: стандарт, фича или баг?
    #39594357
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arioch,

это же очевидно. Не надо путать тёплое с мягким
...
Рейтинг: 0 / 0
Неустановка локальной переменной при пустом наборе: стандарт, фича или баг?
    #39594359
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvя не вижу разницы в этих способах. Нет результата - ничего не присваивается. Есть результат - присваивается.

А стандарт - видит. И сам firebird тожt видит
Если результата нету - то присваивается NULL
В одном из случаев.

И если даже ты не можешь навскидку вспомнить правильное по стандарту поведение, странно это ожидать от чайников.
...
Рейтинг: 0 / 0
Неустановка локальной переменной при пустом наборе: стандарт, фича или баг?
    #39594360
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv> я не вижу разницы в этих способах.
kdv> Нет результата - ничего не присваивается.
kdv> Есть результат - присваивается.

Нифига себе заявление!
Дим, пожуй чего-нибудь,
подумай ещё пару раз...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Неустановка локальной переменной при пустом наборе: стандарт, фича или баг?
    #39594361
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамТы не заметил, что кроме тебя про циклы вообще никто даже не заикался?

Иногда лучше жевать, чем....
...чем торопиться, скажем вежливо.

rdb_devЕсли, к примеру, подобный запрос внутри FOR возвращает строки
...
Рейтинг: 0 / 0
Неустановка локальной переменной при пустом наборе: стандарт, фича или баг?
    #39594362
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arioch> Но в доке тоже надо отобразить.

Что именно? Конкретный пример туда перетащить?
Или, может, весь стандарт перевести и туда втюхать? :)
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Неустановка локальной переменной при пустом наборе: стандарт, фича или баг?
    #39594363
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисэто же очевидно. Не надо путать тёплое с мягким

Нет. Это - всего лишь привычно, и ни в коем случае не очевидно.

Это даже KDV как оказалось не очевидно.

Зато все тут обронзовели и с "тупыми юзерами" только через губу могут общаться
...
Рейтинг: 0 / 0
25 сообщений из 86, страница 2 из 4
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Неустановка локальной переменной при пустом наборе: стандарт, фича или баг?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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