このチュートリアルでは、sys_refcursorを使用してOracleのストアドプロシージャから結果セットを返す例を示しています。
次の手順に従って、Oracleのストアドプロシージャから結果セットを返します。
1。 Oracleでストアドプロシージャを作成する
次のストアドプロシージャ(p_dept)は、部門番号がパラメータ値以下である部門テーブルからsys_refcursor(p_result)に部門名を返します。
CREATE OR REPLACE PROCEDURE p_dept (p_deptno IN dept.deptno%TYPE, p_result OUT SYS_REFCURSOR) IS BEGIN OPEN p_result FOR SELECT dname FROM dept WHERE deptno <= p_deptno; END; /
2。返された結果セットとプロセスを取得する
次のPL/SQLブロックは、ストアド・プロシージャ(p_dept)から結果セットを取得し、部門名を出力します。
SET SERVEROUTPUT ON; DECLARE v_result SYS_REFCURSOR; v_dname VARCHAR2 (100); BEGIN /* call the procedure by passing department numbner and sys_refcursor for resultset */ p_dept (30, v_result); LOOP FETCH v_result INTO v_dname; EXIT WHEN v_result%NOTFOUND; DBMS_OUTPUT.put_line (v_dname); END LOOP; END; /
出力:
ACCOUNTING RESEARCH SALES PL/SQL procedure successfully completed.
関連項目:
- PL/SQLを使用してPDFファイルを作成する
- PL/SQLで任意の国の現在の現地時間を取得