日期:2014-05-17  浏览次数:20967 次

(高分在线)用动态sql执行返回游标变量的存储过程问题
例:
procedure   pro1(p_in   number,   p_rslt   out   sys_refcursor)   is
begin
open   p_rslt   for   select   *   from   tb1   where   col1=p_in;
end;

--下面是调用过程
procedure   pro2(   p_rslt   out   sys_refcursor)   is
begin
    --这种方法可以
    pro1(100,p_rslt);
    --下面就不行
    execute   immediate   'begin   pro1(:1,:2);   end; '   using   100,out   p_rslt;
end;

请问要如何才能通过execute   immediate执行返回结果集的存储过程?

------解决方案--------------------
以前我也试过。
动态绑定sys_refcursor这种复杂类型的好像就是不行。
后来没有仔细研究。
理论上应该可以的。
可以试一下使用Oracle动态执行的包,绑定这个类型。
只是一个思路。
关注
------解决方案--------------------
看看这个

http://vadimtropashko.wordpress.com/cursors/