包查询中的PLSQL函数

时间:2012-07-06 09:31:28

标签: oracle plsql

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

1 个答案:

答案 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游标,但我会留给你研究。