我有一个名为employees的表。我想写两个函数。通过使用refcursor来编写函数。它想从Employmentess表中获取所有行...并且结果将通过第二个函数显示。这两个函数应该在一个单独的包中
答案 0 :(得分:0)
您的问题显示很少有行业或努力来制定解决方案。
首先阅读Oracle documentation,它会对你有很大的帮助。
作为您想要实现的目标的一个例子:
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 on。
如果出现问题,你还应该添加一个异常处理程序来强制关闭ref游标,但我会留给你研究。