Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.12.09;
Скачать: CL | DM;

Вниз

Как вам такой запрос???   Найти похожие ветки 

 
Карелин Артем ©   (2002-11-15 11:02) [0]

Начинаю разбираться с хранимыми процедурами в FireBird. Для выбора сразу из двух таблиц сделал такое:
.....
RETURNS (
WID INTEGER,
WNAME VARCHAR (100),
...
кусь-кусь
...
BEGIN
FOR SELECT WID,WNAME,W_AID,WTYPE,WBIK,WINN,WOKONX,WOKPO,WDAT_REC,WFLAG_I,WTEL,WPRIM,WUL,WZIP,KOD_REG,KOD_INS,WPASS_NOM,WPASS_SER,WPASS_KEM
FROM WLAD where wflag_i<>3
INTO :WID,:WNAME,:W_AID,:WTYPE,:WBIK,:WINN,:WOKONX,:WOKPO,:WDAT_REC,:WFLAG_I,:WTEL,:WPRIM,:WUL,:WZIP,:KOD_REG,:KOD_INS,:WPASS_NOM,:WPASS_SER,:WPASS_KEM
DO
FOR SELECT AID,APARENT,ANAME,ADAT_REC,AFLAG_I
FROM ADRESS where aid=:w_aid and kod_reg=:kod_reg and kod_ins=:kod_ins
INTO :AID,:APARENT,:ANAME,:ADAT_REC,:AFLAG_I
DO
BEGIN
if (AFLAG_I<>3) then
SUSPEND;
END
END

Можно ли как-то оптимизировать такую процедуру?

Все работает, только не знаю как из второй таблицы выбирать только последнее значени, если select может выбрать несколько значений.
Как выбрать последнее значение из набора данных в хранимой процедуре???
З.Ы. Только функциональность должна оставаться такой же.


 
Romkin ©   (2002-11-15 11:40) [1]

вынеси suspend за цикл - вытолкнет последнюю строку


 
Карелин Артем ©   (2002-11-20 12:53) [2]

DO
BEGIN
if (AFLAG_I<>3) then
SUSPEND;
END
END

Ежели вынести if (AFLAG_I<>3) then SUSPEND; за следующий енд, то мой любимый EMS ругается на ошибку.
Ничего не придумал, кроме как между бегином и ендом вставить ничего не делающую строку типа id=:id. Но это некорректно с точки зрения логики.
Ваши комментарии......


 
Карелин Артем ©   (2002-11-20 13:27) [3]

Ничего не придумал, кроме как во втором селекте сделать сортировку в обратном порядке и выбирать только первую запись. Select top(1) from... А от второго For избавиться.


 
Victor_Cr ©   (2002-11-20 15:11) [4]

А по какому принципу выбираеться последняя запись (дата, уникальный код)?


 
Карелин Артем ©   (2002-11-20 15:14) [5]

Вообще-то когда по дате, когда по коду...
Тут это не показано...



Страницы: 1 вся ветка

Текущий архив: 2002.12.09;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.021 c
6-28158
Severin
2002-10-13 10:00
2002.12.09
Помогите пожалуйста


4-28350
Dark Simpson
2002-10-25 23:54
2002.12.09
RESIZING ОКНА


1-27943
Yuraz
2002-11-29 09:54
2002.12.09
Не получается вставить в поток небольшую (длительную) процедуру.


14-28200
KIR
2002-11-20 00:57
2002.12.09
Народ, где можно поискать инфу по FIBPlus?


14-28295
sniknik
2002-11-19 21:32
2002.12.09
Кодеры сайта delphi.mastak.ru проснулись!