帶引數的游標函式一

2021-05-28 11:51:45 字數 3476 閱讀 2748

create or replacefunction fun_odr_autoorgschmid(odrorgid in varchar2,

odrdlvrid in varchar2,

odritemid in varchar2,

odrorgtype in varchar2)

return varchar2 is

tmp_odrm021_schmid varchar2(13) := null; --用於不同條件下的方案名稱

--門店

cursor odr_a(orgid varchar2,itemid varchar2) is select odrm021_schmid from odrm021_autoorg

whereodrm021_autoorg.odrm021_orgid = orgid

andodrm021_autoorg.odrm021_itemid = itemid

andodrm021_autoorg.odrm021_auto*** = '1';

cursor odr_b(orgidvarchar2) is select odrm021_schmid from odrm021_autoorg

whereodrm021_autoorg.odrm021_orgid = orgid

andodrm021_autoorg.odrm021_itemid = '-1'

andodrm021_autoorg.odrm021_auto*** = '1';

--物流

cursor odr_wa(orgid varchar2,dlvridvarchar2,itemid varchar2) is select odrm021_schmid from odrm021_autoorg

whereodrm021_autoorg.odrm021_orgid = orgid

andodrm021_autoorg.odrm021_dlvrid = dlvrid

and odrm021_autoorg.odrm021_itemid =itemid

andodrm021_autoorg.odrm021_auto*** = '1';

cursor odr_wb(orgid varchar2,itemid varchar2)is select odrm021_schmid from odrm021_autoorg

where odrm021_autoorg.odrm021_orgid= orgid

andodrm021_autoorg.odrm021_itemid = itemid

andodrm021_autoorg.odrm021_dlvrid = '-1'

andodrm021_autoorg.odrm021_auto*** = '1';

cursor odr_wc(orgid varchar2,dlvrid varchar2)is select odrm021_schmid from odrm021_autoorg

whereodrm021_autoorg.odrm021_orgid = orgid

andodrm021_autoorg.odrm021_dlvrid = dlvrid

andodrm021_autoorg.odrm021_itemid = '-1'

andodrm021_autoorg.odrm021_auto*** = '1';

cursor odr_wd(orgid varchar2) is selectodrm021_schmid from odrm021_autoorg

whereodrm021_autoorg.odrm021_orgid = orgid

and odrm021_autoorg.odrm021_dlvrid= '-1'

andodrm021_autoorg.odrm021_itemid = '-1'

andodrm021_autoorg.odrm021_auto*** = '1';

門店規則:對於門店採用該變數是,odrorgtype= '01'

而對應物流規則:是當前的odrorgtype = '02'

begin

--門店和物流規則

if odrorgtype = '01' then

openodr_a(odrorgid,odritemid);

loop

fetchodr_ainto tmp_odrm021_schmid;

exit whenodr_a%notfound;

end loop;

close odr_a;

if tmp_odrm021_schmid is null then

open odr_b(odrorgid);

loop

fetch odr_b intotmp_odrm021_schmid;

exit when odr_b%notfound;

end loop;

close odr_b;

end if;

end if;

if odrorgtype = '02' then

open odr_wa(odrorgid,odrdlvrid,odritemid);

loop

fetch odr_wa into tmp_odrm021_schmid;

exit when odr_wa%notfound;

end loop;

close odr_wa;

if tmp_odrm021_schmid is null then

open odr_wb(odrorgid,odritemid);

loop

fetch odr_wb intotmp_odrm021_schmid;

exit when odr_wb%notfound;

end loop;

close odr_wb;

if tmp_odrm021_schmid isnull then

openodr_wc(odrorgid,odrdlvrid);

loop

fetch odr_wc intotmp_odrm021_schmid;

exit whenodr_wc%notfound;

end loop;

close odr_wc;

iftmp_odrm021_schmid is null then

openodr_wd(odrorgid);

loop

fetch odr_wd into tmp_odrm021_schmid;

exit whenodr_wd%notfound;

end loop;

close odr_wd;

end if;

end if;

end if;

end if;

return(tmp_odrm021_schmid);

endfun_odr_autoorgschmid;

/

oracle帶引數的游標

oracle中的游標可以帶引數麼?具體 怎麼實現呢?可以啊,引數在游標定義時使用,開啟時傳入引數,例如 create or replace procedure a as cursor b c id int is select from d where id c id begin open b 111...

帶引數的main函式

void main int argc,char argv 程式中的argc 0代表什麼呢?while argc 0 printf s n argv 類while argc 0 main函式中所帶的兩個引數的含義這樣的 argc表示執行本命令 編繹連線產生的exe檔案 時所帶引數的個數,注意這裡包含e...

帶引數的main函式

在學習c語言的時候,我們知道除主函式外,函式是可以互相呼叫的,主函式可以呼叫其他函式,其他函式不能呼叫主函式,主函式是被系統呼叫的。函式呼叫時可以帶引數也可以不帶引數,這完全取決於該函式是有參函式還是無參函式。主函式可不可以帶引數呢?回答是肯定的,這種引數是在程式運算時給出的所以又叫命令列引數。下面...