你要先定义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;
/
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;
/
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;
/
必须使用包