powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Execute block
5 сообщений из 5, страница 1 из 1
Execute block
    #39815298
ECMAScriptNinja
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Появилась необходимость переписать запрос под Execute block.
Необходимо вывести все записи из указанной таблицы, но если не указывать условие WHERE то получается ошибка multiple rows.
По ошибке понятно что оно не может весь результат впихнуть в одну строку, должно ведь каждый результат выводить в отдельную строку.... или у меня не правильное представление о SUSPEND.
Собственно сам запрос(упростил и подписал для приятности глаз как мог):
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
execute block
returns(ID_ABON integer,ID_CATEGORY integer, DATE_NATH date, DATE_KON date, status integer,PRIM varchar(200),DATE_VVOD date, KOD_OP integer, STAT_COMMENT integer,
N_CATEGORY varchar(100), ADRES varchar(100),N_COMMENT varchar(100), NOM_ABON varchar(15),KOL_JIL integer, kol_lg integer, DATE_DOST date, NAIM_SS varchar(100))
as
begin
--Обнуляем
ID_ABON = 0; ID_CATEGORY=0;DATE_NATH=null;DATE_KON=null;status=0; PRIM='';DATE_VVOD=null;KOD_OP=0; STAT_COMMENT=0;N_CATEGORY=''; ADRES=''; N_COMMENT='';NOM_ABON='';
KOL_JIL=0;kol_lg=0;DATE_DOST=null;NAIM_SS='';


--Что выбрать
select  g.id_abon, g.id_category, g.date_nath, g.date_kon, g.status, g.prim, g.date_vvod, g.kod_op, g.stat_comment, s.naim,
(select p.adres from bal_pc_adres(g.id_abon) p), k.naim_kod, sa.nom_abon, sa.kol_jil, sa.kol_lg,
(select max(z.date_dost) from bal_pr_zajvka z where z.id_abon=g.id_abon and coalesce(z.pr_ned,0)=0), bs.naim

--Откуда выбрать
from bal_gurnal_sop g
inner join spr_sop s on (s.id=g.id_category)
inner join bal_spr_abon sa on (sa.id=g.id_abon)
inner join sp_punkt sp on (sp.kod_punkt=sa.kod_punkt)
left outer join bal_spr_ss bs on (bs.kod=sp.kod_ss)
left outer join klsfct k on (k.kod=77) and k.kod_hc=g.stat_comment

--where g.id_abon = 19   когда задаешь к примеру данное условие(гарантированно будет 1 уникальное поле) отрабатывает без проблем

--Присваиваем
into :ID_ABON,:ID_CATEGORY,:DATE_NATH,:DATE_KON,:status,:PRIM,:DATE_VVOD,:KOD_OP,:STAT_COMMENT,:n_category,:ADRES,:N_COMMENT,:NOM_ABON,
:KOL_JIL,:kol_lg,:DATE_DOST,:NAIM_SS;
suspend;

end


на выходе примерно должно получиться Как-то так:
id_abon date
19 20.01.2019
1256 05.11.2015
658 14.06.2018

Но выкидывает ошибку multiple rows . Что-то я упустил, может подскажете?

И пользуясь случаем. Понадобилось добавить второй ключ к таблице - используя "ленивый режим" при создании нового поля и указывая что это будет ключем ругается что ключ имеется уже. Запросом тоже не получается(пример запроса не могу дать т.к.
пытался в пятницу добавить и ввиду того что не получалось не сохранил).
Может так на вскидку подскажете!
...
Рейтинг: 0 / 0
Execute block
    #39815303
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
FOR SELECT ... FROM ... INTO .... 
  DO SUSPEND;
...
Рейтинг: 0 / 0
Execute block
    #39815306
ECMAScriptNinja
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дорогой вы мой человек... Благодарю большое!!!!
hvlad
Код: sql
1.
2.
FOR SELECT ... FROM ... INTO .... 
  DO SUSPEND;



Насчет второго ключа не подскажете?(1 ключ есть, второй добавить не могу).....
...
Рейтинг: 0 / 0
Execute block
    #39815308
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ECMAScriptNinja,

какой ещё второй ключ? Если речь про ПК, то он может быть только один, но можно добавить UNIQUE.
Если же надо добавить второй столбец в PK, то сначала надо удалить предыдущий ключ
...
Рейтинг: 0 / 0
Execute block
    #39815312
ECMAScriptNinja
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов ДенисECMAScriptNinja,

какой ещё второй ключ? Если речь про ПК, то он может быть только один, но можно добавить UNIQUE.
Если же надо добавить второй столбец в PK, то сначала надо удалить предыдущий ключ

Хм....понял благодарю! да,я про PK

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


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