我有一个名为employees的表..我想编写两个函数。第一个函数使用refcursor它想从employess表中获取所有行...结果将通过第二个函数显示。这两个函数应该在一包
问问题
212 次
1 回答
0
您的问题表明很少有行业或努力制定解决方案。
从阅读Oracle 文档开始,它将极大地帮助您。
作为您想要实现的目标的示例:
CREATE OR REPLACE
PACKAGE ref_cur_package
AS
FUNCTION get_emp
RETURN SYS_REFCURSOR;
PROCEDURE show_emp;
END ref_cur_package;
CREATE OR REPLACE
PACKAGE BODY ref_cur_package
AS
FUNCTION get_emp
RETURN SYS_REFCURSOR
IS
emp_rc SYS_REFCURSOR;
BEGIN
OPEN emp_rc
FOR SELECT *
FROM emp;
RETURN emp_rc;
END get_emp;
PROCEDURE show_emp
IS
emp_rc SYS_REFCURSOR;
emp_row emp%ROWTYPE;
BEGIN
emp_rc := get_emp;
LOOP
FETCH emp_rc INTO emp_row;
EXIT WHEN emp_rc%NOTFOUND;
DBMS_OUTPUT.put_line('Employee: '||emp_row.firstname||' '||emp_row.lastname);
END LOOP;
CLOSE emp_rc;
END show_emp;
END ref_cur_package;
/
要查看输出,您需要将serveroutput 设置为.
如果出现问题,您还应该添加一个异常处理程序以强制关闭 ref 游标,但我将把它留给您研究。
于 2012-07-17T14:05:57.993 回答