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

Вниз

Хранимая процедура и её входные параметры.   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.041 c
6-1100412396
focor
2004-11-14 09:06
2005.01.30
HTML_API


10-1082450797
Gauss
2004-04-20 12:46
2005.01.30
Не могу создать ком объект


4-1102333739
UFO
2004-12-06 14:48
2005.01.30
2 нити при старте программы


3-1103908935
vixic
2004-12-24 20:22
2005.01.30
TDataSetProvider


1-1106005099
TGLDummyCube
2005-01-18 02:38
2005.01.30
Неразрешимая проблема из GLScene ? Сохранение float-значения