我把所有的存储过程都定义在一个包里,有很多存储过程是需要返回结果集的,我看资料说要定义引用型游标来做输出参数,我的问题是,我需要定义几个引用型游标?是为每个需要返回结果集的存储过程都定义一个?还是只定义一个,需要返回结果集的存储过程都用这一个来做输出参数?

解决方案 »

  1.   

    sys_refcursor不用定义,只用变量声明就可以
      

  2.   

    procedure返回结果集用的是out参数呀,只要你的procedure返回的out参数是sys_refcursor就可以了比如:create or replace package prac
    is
    procedure pro1(v1 in number, v2 out sys_refcursor);
    procedure pro2(v1 in number, v2 out sys_refcursor);
      

  3.   

    和我看的资料不一样喔,我看的资料是这样写的:
     create or replace package pp as
       type mycursor is ref cursor;
       procedure subselect(aa in number,bb out mycursor);
     end; create or replace package body pp as 
      procedure subselect(aa in number,bb out mycursor) is
        begin
         open bb for
           select ss.id,ss.name
           from ss
           where ss.id=aa;
        end;
     end;不知用你的方法该怎么写?本人初学者。 
      

  4.   

    是一样的,#4这种写法是自己在包内定义了一个mycursor类型,然后声明成该类型sys_refcursor是系统自带的,不需要自己定义。
      

  5.   

    既然是系统自带的,那一定比自己定义的在性能、效率上有优势吧?8I,9I,10G都有这个sys_refcursor吗?我主要用8I