sql >> データベース >  >> RDS >> Oracle

OracleのストアドプロシージャからResultSetを返す方法は?

    このチュートリアルでは、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で任意の国の現在の現地時間を取得
    1. SQLとNoSQLの違い

    2. JavaでのFork/JoinFrameworkを使用した並列プログラミングの基本

    3. PosgreSQL txid_current()値を解釈する方法

    4. 実行中のSELECTステートメントを強制終了する方法