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呢?

解决方案 »

  1.   

    没看懂lz的意思, a是A的返回结果吗? 顶一下先
      

  2.   

    a是A的返回结果,是我最终要得到的数据,现在的问题是,通过调用过程B,可以得到游标结果集b,而a是b中的某几条记录,我怎么可以在已知b的基础上得到b中的某些记录并赋值到a中,最终返回a
      

  3.   

    请问怎么把b存入临时表呢?b中的字段不是固定的,所以事先并不知道b的结构。另外使用的是oracle 9i,所以一些新的函数也用不了
      

  4.   

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