27.52 OPEN_QUERY_CONTEXTファンクションのシグネチャ1

ローカル・データベース、リモート・データベースまたはRESTデータソースの問合せコンテキストを開き、指定されたSQL問合せを実行します。

構文

APEX_EXEC.OPEN_QUERY_CONTEXT (
    p_location               in apex_exec_api.t_location,
    --
    p_table_owner            IN VARCHAR2                       DEFAULT NULL,
    p_table_name             IN VARCHAR2                       DEFAULT NULL,
    p_where_clause           IN VARCHAR2                       DEFAULT NULL,
    p_match_clause           IN VARCHAR2                       DEFAULT NULL,
    p_columns_clause         IN VARCHAR2                       DEFAULT NULL,
    p_order_by_clause        IN VARCHAR2                       DEFAULT NULL,
    p_include_rowid_column   IN BOOLEAN                        DEFAULT FALSE,
    --
    p_sql_query              IN VARCHAR2                       DEFAULT NULL,
    p_function_body          IN VARCHAR2                       DEFAULT NULL,
    p_function_body_language IN t_language                     DEFAULT c_lang_plsql,
    p_plsql_function_body    IN VARCHAR2                       DEFAULT NULL, -- Deprecated:
    p_optimizer_hint         IN VARCHAR2                       DEFAULT NULL,
    --
    p_server_static_id       IN VARCHAR2                       DEFAULT NULL,
    --
    p_module_static_id       IN VARCHAR2                       DEFAULT NULL,
    p_web_src_parameters     IN t_parameters                   DEFAULT c_empty_parameters,
    p_external_filter_expr   IN VARCHAR2                       DEFAULT NULL,
    p_external_order_by_expr IN VARCHAR2                       DEFAULT NULL,
    --
    p_sql_parameters         IN t_parameters                   DEFAULT c_empty_parameters,
    p_auto_bind_items        IN BOOLEAN                        DEFAULT TRUE,
    --
    p_columns                IN t_columns                      DEFAULT c_empty_columns,
    --
    p_filters                IN t_filters                      DEFAULT c_empty_filters,
    p_order_bys              IN t_order_bys                    DEFAULT c_empty_order_bys,
    p_aggregation            IN t_aggregation                  DEFAULT c_empty_aggregation,
    p_control_break          IN t_control_break                DEFAULT c_empty_control_break,
    --
    p_post_process_type      IN t_post_processing              DEFAULT NULL,
    --
    p_first_row              IN NUMBER                         DEFAULT NULL,
    p_max_rows               IN NUMBER                         DEFAULT NULL,
    --
    p_total_row_count        IN BOOLEAN                        DEFAULT FALSE,
    p_total_row_count_limit  IN NUMBER                         DEFAULT NULL,
    --
    p_supports_binary_number IN BOOLEAN                        DEFAULT FALSE,
    --
    p_array_column_name      IN VARCHAR2                       DEFAULT NULL,
    --
    p_duality_view_static_id IN VARCHAR2                       DEFAULT NULL,
    p_json_source_static_id  IN VARCHAR2                       DEFAULT NULL )
    RETURN t_context;

パラメータ

パラメータ 説明
p_location 問合せコンテキストを開く場所。ローカル・データベース、リモート・データベースまたはRESTデータソースを指定できます。c_location_*定数を使用します。
p_table_owner 問合せタイプTABLEを使用する場合の表の所有者。
p_table_name 問合せタイプTABLEを使用する場合の表の名前。
p_where_clause 問合せタイプTABLEまたはGRAPHが使用されている場合に追加するWHERE句。
p_match_clause 問合せタイプGRAPHを使用する場合に追加するMatch句。
p_columns_clause 問合せタイプGRAPHを使用する場合に追加する列句。
p_order_by_clause 問合せタイプTABLEを使用する場合に追加するORDER BY句。
p_include_rowid_column デフォルトはFALSEです。問合せタイプTABLEの使用時に、ROWID列をSELECTリストに追加します。
p_sql_query 問合せタイプにSQL問合せを使用する場合に実行するSQL問合せ。
p_function_body SQL問合せを戻すファンクション本体。
p_function_body_language p_function_bodyに使用されるプログラミング言語。c_lang_*定数を使用します。
p_plsql_function_body 非推奨になりました。かわりにp_function_bodyを使用してください。
p_optimizer_hint APEXによって生成された最も外側のSQL問合せに適用される、オプティマイザ・ヒント。
p_server_static_id REST対応SQLを使用した場合(p_locationc_location_remote_dbが使用されている場合など)のリモート・サーバーの静的ID。
p_module_static_id RESTデータソースの静的ID (p_locationc_location_rest_sourceが使用されている場合など)。
p_web_src_parameters RESTデータソースに渡されるパラメータ。
p_external_filter_expr RESTデータソースに渡される外部フィルタ式。
p_external_order_by_expr RESTデータソースに渡される外部ORDER BY式。
p_sql_parameters SQL問合せに使用する追加のバインド変数。
p_auto_bind_items APEXアイテム(ページおよびアプリケーション・アイテム)を自動的にバインドするかどうか。
p_columns 選択される列。
p_filters 問合せコンテキストに渡されるフィルタ。
p_order_bys 問合せコンテキストに渡されるORDER BY式。
p_aggregation 問合せに基づいて適用する集計(GROUP BYDISTINCT)。
p_control_break コンテキスト・データをループする際にコントロール・ブレークを返すかどうか。
p_post_process_type RESTデータソースの結果データに適用される後処理のタイプ。c_postprocess_*定数を使用します。
p_first_row 結果セットからフェッチする最初の行。
p_max_rows フェッチする行の最大数。
p_total_row_count 総行数を求めるかどうか。
p_total_row_count_limit 総行数計算の上限値。
p_supports_binary_number BINARY NUMBER列をc_data_type_numberではなくc_data_type_binary_numberとして戻すかどうか。
p_array_column_name RESTソース・データ・プロファイル内の配列列の名前。
p_duality_view_static_id 二面性ビュー・ソースの静的ID。
p_json_source_static_id JSONソースの静的ID。

戻り値

ソース問合せの"カーソル"を表すコンテキスト・オブジェクト。

次の例では、問合せを実行し、結果セットを出力します。このサンプル・コードは、PL/SQL実行 リージョン内で使用できます。

DECLARE
    l_context apex_exec.t_context;

    l_idx_empno    pls_integer;
    l_idx_ename    pls_integer;
    l_idx_job      pls_integer;
    l_idx_hiredate pls_integer;
    l_idx_mgr      pls_integer;
    l_idx_sal      pls_integer;
    l_idx_comm     pls_integer;
    l_idx_deptno   pls_integer;

BEGIN
    l_context := apex_exec.open_query_context(
        p_location          => apex_exec.c_location_local_db,
        p_sql_query         => 'select * from emp' );

    l_idx_empno    := apex_exec.get_column_position( l_context, 'EMPNO');
    l_idx_ename    := apex_exec.get_column_position( l_context, 'ENAME');
    l_idx_job      := apex_exec.get_column_position( l_context, 'JOB');
    l_idx_hiredate := apex_exec.get_column_position( l_context, 'HIREDATE');
    l_idx_mgr      := apex_exec.get_column_position( l_context, 'MGR');
    l_idx_sal      := apex_exec.get_column_position( l_context, 'SAL');
    l_idx_comm     := apex_exec.get_column_position( l_context, 'COMM');
    l_idx_deptno   := apex_exec.get_column_position( l_context, 'DEPTNO');

    WHILE apex_exec.next_row( l_context ) LOOP
        sys.dbms_output.put_line( 'EMPNO: ' || apex_exec.get_number  ( l_context, l_idx_empno    ) );
        sys.dbms_output.put_line( 'ENAME: ' || apex_exec.get_varchar2( l_context, l_idx_ename    ) );
        sys.dbms_output.put_line( 'MGR:   ' || apex_exec.get_number  ( l_context, l_idx_mgr      ) );

    END LOOP;

    apex_exec.close( l_context );
    RETURN;
EXCEPTION
    WHEN others THEN
        apex_exec.close( l_context );
        RAISE;
END;