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