-1

我有一个名为employees的表..我想编写两个函数。第一个函数使用refcursor它想从employess表中获取所有行...结果将通过第二个函数显示。这两个函数应该在一包

4

1 回答 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 回答