儲存過程和函式模板範例

2022-03-29 08:37:58 字數 3246 閱讀 6777

1.函式:

function fun_buyernameget(ps_cardno in varchar2) return varchar2

isvs_result varchar2(80);

begin

--如果存在該業務員的工號,則返回他的姓名,否則返回空

if exist('select full_name from kxstepiii.ba_person_info where card_no = ''' || ps_cardno || '''') then

begin

select full_name into vs_result from kxstepiii.ba_person_info where card_no = ps_cardno;

end;

else

vs_result := '';

end if;

return vs_result;

end fun_buyernameget;

2.儲存過程

a.插入操作:

procedure pro_stockins(ps_suppliername  in   varchar2,

pn_itemqty       in   number,

ps_itemdesc      in   varchar2,

ps_comedate      in   varchar2,

ps_attachedfile  in   varchar2,

ps_supaddress    in   varchar2,

ps_supphone      in   varchar2,

ps_supfax        in   varchar2,

ps_supemail      in   varchar2,

ps_userno        in   varchar2,

ps_hkstockitemno out  varchar2)

isvn_count number;   --記錄新生成的發布存貨單號是否存在

begin

end pro_stockins;

b.更新操作:

end pro_claimstock;

c.查詢操作:

包頭裡面定義:

type  t_cursor  is  ref  cursor;     ----ref cursor

procedure pro_stockqry(ps_hkstockitemno in  varchar2,

ps_status        in  varchar2,

ps_suppliername  in  varchar2,

ps_itemdesc      in  varchar2,

ps_begindate     in  varchar2,

ps_enddate       in  varchar2,

returncur        out t_cursor)

isvs_hkstockitemno varchar(22);        --存貨號

vs_suppliername  varchar(202);       --**商名稱

vs_itemdesc      varchar(402);       --貨物描述

vs_status        varchar(12);        --存貨狀態   

vs_sql           varchar(3000);      --儲存動態sql語句   

begin

--構造模糊查詢的變數

vs_hkstockitemno := '%' || ps_hkstockitemno || '%';

vs_suppliername  := '%' || ps_suppliername || '%';

vs_itemdesc      := '%' || ps_itemdesc || '%';

--當存貨狀態為空時,查出所有狀態下的存貨記錄

if ps_status = 'all' then

vs_status := '%';

else

vs_status := ps_status;

end if;

--組織動態sql語句

vs_sql :=  'select a.hkstockitem_no, a.supplier_name, a.item_desc, a.item_qty, pu_codeinfo.code_desc as status,

a.attached_file, (kxstepiii.ba_person_info.full_name || a.buyer) as buyer

from pu_hk_stock a

left join pu_codeinfo on pu_codeinfo.code_type = ''存貨狀態'' and  a.status = pu_codeinfo.en_code_desc

left join kxstepiii.ba_person_info on a.buyer = kxstepiii.ba_person_info.card_no

where (a.status like ''' || vs_status || ''') and (a.hkstockitem_no like ''' || vs_hkstockitemno || ''')

and (a.supplier_name like ''' || vs_suppliername || ''')

and (a.item_desc like ''' || vs_itemdesc || ''')';

--根據開始時間和結束時間來新增查詢條件

if ps_begindate is not null then  --開始時間是否為空

vs_sql := vs_sql || ' and (a.creation_date >= to_date(''' || ps_begindate || ''', ''yyyy-mm-dd''))';

end if;

if ps_begindate is not null then    --結束時間是否為空

vs_sql := vs_sql || ' and (a.creation_date < to_date(''' || ps_enddate || ''', ''yyyy-mm-dd'') + 1)';

end if;

--查詢資料

open returncur for vs_sql;

end pro_stockqry;

函式模板和模板函式

1.函式模板的宣告和模板函式的生成 1.1函式模板的宣告 函式模板可以用來建立乙個通用的函式,以支援多種不同的形參,避免過載函式的函式體重複設計。它的最大特點是把函式使用的資料型別作為引數。函式模板的宣告形式為 template 返回型別 函式名 參數列 其中,template是定義模板函式的關鍵字...

函式模板和模板函式

1.函式模板的宣告和模板函式的生成 1.1函式模板的宣告 函式模板可以用來建立乙個通用的函式,以支援多種不同的形參,避免過載函式的函式體重複設計。它的最大特點是把函式使用的資料型別作為引數。函式模板的宣告形式為 template 返回型別 函式名 參數列 其中,template是定義模板函式的關鍵字...

函式模板和模板函式

1.函式模板的宣告和模板函式的生成 1.1函式模板的宣告 函式模板可以用來建立乙個通用的函式,以支援多種不同的形參,避免過載函式的函式體重複設計。它的最大特點是把函式使用的資料型別作為引數。函式模板的宣告形式為 template 返回型別 函式名 參數列 其中,template是定義模板函式的關鍵字...