CREATE OR REPLACE PACKAGE pkg_test
AS
   TYPE myrctype IS REF CURSOR;
   PROCEDURE get(i_test INTEGER,p_rc OUT myrctype);
END pkg_test;
/CREATE OR REPLACE PACKAGE BODY pkg_test
AS
   PROCEDURE get(i_test INTEGER,p_rc OUT myrctype) IS
   BEGIN
     IF i_test = 0 THEN
        OPEN p_rc FOR SELECT SYSDATE FROM dual;
     ELSE
        OPEN p_rc FOR SELECT * FROM tab;
     END IF;
   END get;
END pkg_test;
/

解决方案 »

  1.   

    declare
           type cur is ref cursor;  
           myCur cur;
           v_row A%rowtype;
           function fun(i number)
           return cur
           is
           c cur;
           begin
                open c for select * from A;
                return c;
           end fun;
    begin
           myCur:=fun(1);
           loop
               fetch myCur into v_row;
               exit when myCur%notfound;
               dbms_output.put_line(v_row.name);
           end loop;
           
           close myCur;
    end;