私はemployeesという名前のテーブルを持っています..2つの関数を書きたいです.refcursorを使用して1番目の関数を使用してemployessテーブルからすべての行をフェッチしたい...そして結果は2番目の関数を通して表示されます。これらの2つの関数は1つのパッケージ
質問する
212 次
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 を onに設定する必要があります。
また、問題が発生した場合に ref カーソルを強制的に閉じる例外ハンドラーを追加する必要がありますが、調査はあなたに任せます。
于 2012-07-17T14:05:57.993 に答える