首先定义包
CREATE OR REPLACE PACKAGE pkg_test
AS
  TYPE myrctype IS REF CURSOR;  PROCEDURE get (p_id NUMBER, p_rc OUT myrctype);
END pkg_test;
CREATE OR REPLACE PACKAGE pkg_test
AS
  TYPE myrctype IS REF CURSOR;  PROCEDURE get (p_id NUMBER, p_rc OUT myrctype);
END pkg_test;
创建过程:
CREATE OR REPLACE PACKAGE BODY pkg_test
AS
  PROCEDURE get (p_id NUMBER, p_rc OUT myrctype)
  IS
     sqlstr   VARCHAR2 (500);
  BEGIN
     IF p_id = 0 THEN
        OPEN p_rc FOR
           SELECT ID, NAME, sex, address, postcode, birthday
             FROM student;
     ELSE
        sqlstr :=
           'select id,name,sex,address,postcode,birthday
          from student where id=:w_id';
        OPEN p_rc FOR sqlstr USING p_id;
     END IF;
  END get;
END pkg_test;
/