动态调用存储过程 sample:

-- requirement:

系统中有大量结构相同的过程,想通过动态调用简化应用代码。

-- 例子说明:

-- procedure : p_emp , get a input parameter with default value , and result a cursor.

create or replace procedure p_emp( p_name in varchar2 default null, p_cur OUT Sys_Refcursor ) is
begin

OPEN P_CUR FOR SELECT ENAME FROM EMP WHERE eNAME LIKE '%'||P_NAME||'%' ;

end p_EMP;

-- demo code to calling a dynamic procedure.

set serverout on
declare
p_sql varchar2(4000);
p_cur1 sys_refcursor ;
p_proc varchar2(30);
p_retcur varchar2(30);
p_name varchar2(50) ;
begin
-- p_emp(p_cur => p_cur1) ;

p_proc := 'p_emp' ;
p_retcur := 'p_cur1' ;

p_sql := 'begin '||p_proc||'(p_cur => :cur1) ; end; ' ;
dbms_output.put_line ('procedure :'||p_sql) ;
-- This is the point . bind a procedure out variable .
execute immediate p_sql using p_cur1 ;

dbms_output.put_line ('emp name list :' ) ;

loop
fetch p_cur1 into p_name ;
exit when p_cur1%notfound ;
dbms_output.put_line ('name : '||p_name) ;

end loop;
dbms_output.put_line ('The end . ') ;
close p_cur1 ;
end;
/

[@more@]

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/350519/viewspace-1038584/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/350519/viewspace-1038584/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值