--包头
create or replace
package ColumnPowerSelectAllPACKAGE is
  type MyCursor is ref cursor;
  procedure P_GetTableScript(p1 in INTEGER);
end;--包体
create or replace
PACKAGE BODY COLUMNPOWERSELECTALLPACKAGE AS
  procedure P_GetTableScript(p1 in INTEGER) as
  returnvalue MyCursor;
  begin
  open returnvalue for select * from ut_users where pkid = p1;
  end P_GetTableScript;
END COLUMNPOWERSELECTALLPACKAGE;为何调用call columnpowerselectallpackage.P_GetTableScript(7); 
只显示call columnpowerselectallpackage.P_GetTableScript(7) succeeded. 
而不返回结果集呢?还是procedure根本就不能返回结果集???

解决方案 »

  1.   

    兄台,你要用一个cursor变量去接受这个返回的cursor参数。
      

  2.   


    CREATE OR REPLACE FUNCTION gg(s INT,e INT) RETURN SYS_REFCURSOR AS 
     r_c SYS_REFCURSOR;
    BEGIN
    OPEN r_c FOR
     SELECT ename,empno
       FROM (SELECT ename,empno, ROW_NUMBER() OVER(ORDER BY ENAME) RN FROM SCOTT.EMP T)
      WHERE RN >= S
        AND RN <= E;
    RETURN r_c;
    END;
    /DECLARE
     r_c SYS_REFCURSOR;
     v_c1 VARCHAR2(10);
     v_c2 VARCHAR2(10);
    BEGIN
     r_c:=gg(2,6);
     LOOP
      FETCH r_c INTO v_c1,v_c2;
      EXIT WHEN r_c%NOTFOUND;
      dbms_output.put_Line(v_c1||'-'||v_c2);
     END LOOP;
     CLOSE r_c;
    END;
    /