Форум: "Базы";
Текущий архив: 2005.01.30;
Скачать: [xml.tar.bz2];
ВнизХранимая процедура и её входные параметры. Найти похожие ветки
← →
korvin © (2004-12-24 16:45) [0]Как мне в серверной процедуре проверить на входе параметр и если он, скажем, = 0 то вообще его не использовать в этой самой процедуре?
Он используется естественно в установке фильтров where.
← →
DSKalugin © (2004-12-24 16:56) [1]Я не придумал ничего лучше как продублировать ткст процедуры но без этого параметра VEND_ID
CREATE PROCEDURE "getCross" (
DET_ID INTEGER,
VEND_ID INTEGER)
RETURNS (
CR_ID INTEGER,
CR_NUMBER VARCHAR(30),
CR_MAKER VARCHAR(30),
CR_OPIS VARCHAR(90),
CR_VEND_ID INTEGER,
CR_TP_ID INTEGER)
AS
begin
if (VEND_ID=-1) then begin
for
SELECT CROSS.DL_ID1, SKLAD_NUMBERS.DIRTY_COD, BOOK_MAKERS.MAKER_NAME,
SKLAD_NUMBERS.SKLAD_COMMENT, CROSS.CR_VENDOR_ID, CROSS.CR_TYPE_ID
FROM CROSS
INNER JOIN SKLAD_NUMBERS ON (SKLAD_NUMBERS.ID_DET_LIST = CROSS.DL_ID1)
INNER JOIN BOOK_MAKERS ON (BOOK_MAKERS.ID_MAKERS = SKLAD_NUMBERS.MAKER_ID)
where (CROSS.DL_ID2=:det_id) and (is_deleted is null)
union
SELECT CROSS.DL_ID2, SKLAD_NUMBERS.DIRTY_COD, BOOK_MAKERS.MAKER_NAME,
SKLAD_NUMBERS.SKLAD_COMMENT, CROSS.CR_VENDOR_ID, CROSS.CR_TYPE_ID
FROM CROSS
INNER JOIN SKLAD_NUMBERS ON (SKLAD_NUMBERS.ID_DET_LIST = CROSS.DL_ID2)
INNER JOIN BOOK_MAKERS ON (BOOK_MAKERS.ID_MAKERS = SKLAD_NUMBERS.MAKER_ID)
where (CROSS.DL_ID1=:det_id) and (is_deleted is null)
into :cr_id, :cr_number, :cr_maker, :cr_opis, :CR_Vend_ID, :CR_tp_ID
do suspend;
end
else begin
for
SELECT CROSS.DL_ID1, SKLAD_NUMBERS.DIRTY_COD, BOOK_MAKERS.MAKER_NAME,
SKLAD_NUMBERS.SKLAD_COMMENT, CROSS.CR_VENDOR_ID, CROSS.CR_TYPE_ID
FROM CROSS
INNER JOIN SKLAD_NUMBERS ON (SKLAD_NUMBERS.ID_DET_LIST = CROSS.DL_ID1)
INNER JOIN BOOK_MAKERS ON (BOOK_MAKERS.ID_MAKERS = SKLAD_NUMBERS.MAKER_ID)
where (CROSS.DL_ID2=:det_id) and (is_deleted is null) and (CR_VENDOR_ID=:VEND_ID)
union
SELECT CROSS.DL_ID2, SKLAD_NUMBERS.DIRTY_COD, BOOK_MAKERS.MAKER_NAME,
SKLAD_NUMBERS.SKLAD_COMMENT, CROSS.CR_VENDOR_ID, CROSS.CR_TYPE_ID
FROM CROSS
INNER JOIN SKLAD_NUMBERS ON (SKLAD_NUMBERS.ID_DET_LIST = CROSS.DL_ID2)
INNER JOIN BOOK_MAKERS ON (BOOK_MAKERS.ID_MAKERS = SKLAD_NUMBERS.MAKER_ID)
where (CROSS.DL_ID1=:det_id) and (is_deleted is null) and (CR_VENDOR_ID=:VEND_ID)
into :cr_id, :cr_number, :cr_maker, :cr_opis, :CR_Vend_ID, :CR_tp_ID
do suspend;
end
end
← →
stud © (2004-12-24 17:04) [2]например вот, если параметр type_usl - какое-то число, то он учавствует в критерии выбора , если нет, выбираются все записи
for select usl_spr.id, usl_spr.name, usl_spr.price, usl_spr.pr, usl_spr.type_usl_, usl_spr.parent, usl_spr.col_vo
from usl_spr where (usl_spr.type_usl_=:type_usl or (:type_usl=0))
← →
Vemer © (2004-12-24 19:18) [3]У меня в большинстве ХП есть входной параметр FIN(function ID Number :)):
If (FIN = 1) Then
.....
If (FIN = 2) Then
......
Позволяет повесить на 1 ХП много похожих действий.
← →
}|{yk © (2004-12-24 19:42) [4]в 1.5 есть execute statement, так что можно код заносить в базу и по ID брать нужный. Хотя быстродействие от этого упадет...
← →
DSKalugin © (2004-12-25 13:28) [5]2 stud © (24.12.04 17:04
если параметр type_usl - какое-то число, то он учавствует в критерии выбора , если нет, выбираются все записи
а поподробней можно про
(usl_spr.type_usl_=:type_usl or (:type_usl=0))?
если type_usl=1 тогда что? Как вообще эта конструкция работает?
← →
DSKalugin © (2004-12-25 13:43) [6]Понял уже спасибо
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2005.01.30;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.052 c