/*============================================================
程序包中的动态游标
============================================================*/
create or replace package emp_cursorPack is
type type_emp_cursor is ref cursor;
--cur1 type_emp_cursor; 不可以
PROCEDURE proc_emp(cur OUT type_emp_cursor);
end emp_cursorPack;
--创建程序包主体,返回员工薪水结果集
CREATE OR REPLACE PACKAGE BODY emp_cursorPack is
--cur1 type_emp_cursor; 不可以
PROCEDURE proc_emp(cur OUT type_emp_cursor) IS
BEGIN
OPEN cur FOR
SELECT empno,sal FROM emp;
END;
END;
--调用emp_cursorPack.proc_emp存储过程,显示员工薪水
DECLARE
v_empno emp.empno%type;
v_sal emp.sal%type;
emp_salary emp_cursorPack.type_emp_cursor;
BEGIN
emp_cursorPack.proc_emp(emp_salary);
LOOP
FETCH emp_salary INTO v_empno, v_sal;
EXIT WHEN emp_salary%notfound;
DBMS_OUTPUT.PUT_LINE(v_empno||'的薪水是' ||v_sal);
END LOOP;
CLOSE emp_salary;
END;