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

关于游标
oracle数据库中有2个存储过程A和B,其中B是已有的存储过程且不可修改,输出返回游标b,A为要写的过程,输出返回游标a,a为b的子集,示例如下

procedure A(a out sys_refcursor)
  b sys_refcursor;
begin
  B(b); --调用过程B,得到游标b,假设b有3条记录
  xxxxx --这边要怎么写,可以得到游标a,a为游标b结果集中的第1条记录
  open a;  --打开输出结果集a
end

过程B是无法修改的,只能得到结果集b,请问该怎么写可以实现得到a呢?
------解决方案--------------------
可以用临时表,先把b中符合条件的记录存入临时表,再给a.

------解决方案--------------------
你在你的A存储过程里面 定义一个游标类型
吧B存储过程的返回的b游标赋予这个游标类型
然后读取b游标的所需要的指到另一个游标类型参数
最后把这个游标返回 这里就是你想要的a游标了