其实没有什么可看的,检查你的返回结果的sql就行了。

解决方案 »

  1.   

    这是我曾经实验过的察看返回结果集的语句,完全正确CREATE OR REPLACE PACKAGE pkg_test AS
      TYPE cur is REF CURSOR;
      PROCEDURE pro_1(v_deptno NUMBER,c OUT cur);
      FUNCTION fun_1(v_deptno NUMBER) RETURN cur;
    END;
    /CREATE OR REPLACE PACKAGE BODY pkg_test AS
    PROCEDURE pro_1(v_deptno NUMBER,c OUT cur) AS
      v_name VARCHAR2(10);
    BEGIN
      OPEN c FOR SELECT ename FROM emp WHERE deptno = v_deptno;
    END;FUNCTION fun_1(v_deptno NUMBER) RETURN cur IS
      c_temp cur;
    BEGIN
      OPEN c_temp FOR SELECT ename FROM emp WHERE deptno = v_deptno;
      RETURN c_temp;
    END;
    END;
    /DECLARE
      p pkg_test.cur;
      v_ename varchar2(10);
    BEGIN
      p := pkg_test.fun_1(10);
      loop
        fetch p into v_ename;
        exit when p%notfound;
          dbms_output.put_line(v_ename);
      end loop;
      close p;
    END;
    /DECLARE
      p pkg_test.cur;
      v_ename varchar2(10);
    BEGIN
      pkg_test.pro_1(10,p);
      loop
        fetch p into v_ename;
        exit when p%notfound;
          dbms_output.put_line(v_ename);
      end loop;
      close p;
    END;
    /