2012-07-06 63 views
-1

我有一张名为employees..i的表希望编写两个functions.1st函数通过使用refcursor它希望从employess表中获取所有行...并且结果将通过2nd显示功能。这两个功能应该在一个单一的包装包查询中的PLSQL函数

+2

吧! – alfasin 2012-07-06 09:43:24

+2

那么,你的问题到底是什么?到目前为止你有什么尝试过? – Josien 2012-07-06 10:56:59

+1

向我们展示您尝试过的方式,告诉我们您遇到了哪些问题,也许有人可以提供帮助 - 但是,除非您自己做了一些工作,否则不能指望我们为您做。 – 2012-07-09 02:01:52

回答

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输出。

您还应该添加一个异常处理程序,以在出现问题时强制关闭引用光标,但我会将其留给您进行研究。一定要用