你要先定义ref cursorCREATE OR REPLACE PACKAGE pkg_test
AS
   TYPE myrctype IS REF CURSOR;   PROCEDURE get (p_rc OUT myrctype);
END pkg_test;
/CREATE OR REPLACE PACKAGE BODY pkg_test
AS
   PROCEDURE get ( p_rc OUT myrctype)
   IS
   BEGIN
         OPEN p_rc FOR
            SELECT ID, NAME, sex, address, postcode, birthday
              FROM student;
   END get;
END pkg_test;
/

解决方案 »

  1.   

    create or replace package pkg_test 
    as
    type cur_test is ref cursor; -- 定義一個cursor的type
    end pkg_test;
    /
    create or replace procedure p_test
    (
    v_cur out pkg_test.cur_test
    )
    as
    v_sql varchar2(100); -- 
    begin
    v_sql := 'select a1,a2 from test';
    OPEN v_cur FOR v_sql; --
    exception
    when others then 
    DBMS_OUTPUT.PUT_LINE('Error ---------------' || sqlcode || ' : ' || sqlerrm ); 
    end p_test;
    /
    必须使用包
      

  2.   

    怎么看返回的结果集的内容? 用sql plus可以看吗?