15 APEX_EXEC

APEX_EXECパッケージは、データ処理とデータ問合せの機能をカプセル化し、データ・ソースからApplication Expressのコンポーネントおよびプラグインに抽象化を提供します。これには、ローカル・データ・ソース、リモート・データ・ソースおよびWebソース・モジュールに対して問合せまたはプロシージャ・コールを実行するためのプロシージャおよびファンクションが含まれています。これは、アプリケーションやパッケージ内やプロシージャ内で、プラグインの開発にも手続き型のPL/SQL処理にも使用できます。

プロシージャはいずれも、設定するのにAPEXセッションが必要です。Pure SQLまたはPL/SQLコンテキストでは、APEX_SESSIONパッケージを使用して、新しいセッションを初期化します。

一般的なコール・シーケンスは、使用されるデータ・ソースによって異なります。

  1. REST対応のSQLデータ・ソース

    1. [オプション]でバインド変数を準備します

      • APEX_EXEC.T_PARAMETERS型の変数を作成します

      • APEX_EXEC.ADD_PARAMETERとのバインド値を追加します

    2. リモート問合せコールを実行します

      • APEX_EXEC.OPEN_REMOTE_SQL_QUERYをコールします

    3. 結果列名の列索引を取得します

      • APEX_EXEC.OPEN_WEB_SOURCE_QUERYをコールします

    4. 結果セットが使い果たされるまでループします

      • APEX_EXEC.NEXT_ROWをコールします

    5. 位置により各列の列値を取得します

      • APEX_EXEC.GET_VARCHAR2APEX_EXEC.GET_NUMBERAPEX_EXEC.GET_DATE、...をコールします

    6. 最後に必ず問合せコンテキストを閉じます - 重要

      • APEX_EXEC.CLOSEをコールします

  2. Webソース・モジュール

    1. [オプション]でWebソース・パラメータ変数を準備します

      • APEX_EXEC.T_PARAMETERS型の変数を作成します

      • APEX_EXEC.ADD_PARAMETERとのバインド値を追加します

    2. Webソースに渡すフィルタを準備します(Webソースでサポートされている場合)

      • APEX_EXEC.T_FILTERS型の変数を作成します

      • APEX_EXEC.ADD_FILTERとのバインド値を追加します

    3. Webソースに渡すORDER BY式を準備します(Webソースでサポートされている場合)

      • APEX_EXEC.T_ORDER_BYS型の変数を作成します

      • APEX_EXEC.ADD_ORDER_BYとのバインド値を追加します

    4. リモート問合せコールを実行します

      • APEX_EXEC.OPEN_WEB_SOURCE_QUERYをコールします

      • 事前に準備したフィルタ、ORDER BYおよびパラメータを渡します

    5. 結果列名の列索引を取得します

      • APEX_EXEC.GET_COLUMN_POSITIONをコールします

    6. 結果セットが使い果たされるまでループします

      • APEX_EXEC.NEXT_ROWをコールします

    7. 位置により各列の列値を取得します

      • APEX_EXEC.GET_VARCHAR2APEX_EXEC.GET_NUMBERAPEX_EXEC.GET_DATE、...をコールします

    8. 最後に必ず問合せコンテキストを閉じます - 重要

      • APEX_EXEC.CLOSEをコールします

注意:

いつでもAPEX_EXEC.CLOSEをコールできるように、必ずプロシージャまたはファンクションに例外ハンドラを追加してください。これは、データベース・カーソルや一時LOBなどのサーバー・リソースを解放するうえで重要です。