2012-07-06 59 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輸出。

您還應該添加一個異常處理程序,以在出現問題時強制關閉引用光標,但我會將其留給您進行研究。一定要用