Форум: "Базы";
Текущий архив: 2002.12.09;
Скачать: [xml.tar.bz2];
ВнизКак вам такой запрос??? Найти похожие ветки
← →
Карелин Артем (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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.008 c