Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
1-1106037752
vint45
2005-01-18 11:42
2005.01.30
Множества


6-1100092056
Ivolg
2004-11-10 16:07
2005.01.30
Net Send


3-1103809388
Бульбаш
2004-12-23 16:43
2005.01.30
Обработка исключения Oracle


3-1104311766
ivc_andr
2004-12-29 12:16
2005.01.30
Выкусить последнее слово в строке


1-1106143494
vic1
2005-01-19 17:04
2005.01.30
ComboBox





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский