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

被折叠的 条评论
为什么被折叠?



