27.57 OPEN_REST_SOURCE_QUERYファンクション

このファンクションは、RESTソース問合せコンテキストを開きます。指定されたRESTソースの静的IDに基づいて、FETCH_COLLECTIONデータベース操作に一致する操作が選択されます。

構文

APEX_EXEC.OPEN_REST_SOURCE_QUERY (
    p_static_id              IN VARCHAR2,
    p_parameters             IN t_parameters     DEFAULT c_empty_parameters,
    --
    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_columns                IN t_columns        DEFAULT c_empty_columns,
    --
    p_external_filter_expr   IN VARCHAR2         DEFAULT NULL,
    p_external_order_by_expr IN VARCHAR2         DEFAULT NULL,
    --
    p_first_row              IN PLS_INTEGER      DEFAULT NULL,
    p_max_rows               IN PLS_INTEGER      DEFAULT NULL,
    --
    p_total_row_count        IN BOOLEAN          DEFAULT FALSE,
    --
    p_array_column_name      IN VARCHAR2         DEFAULT NULL )
    RETURN t_context;

パラメータ

パラメータ 説明
p_static_id 呼び出すRESTデータソースの静的ID。
p_parameters データ・ソースに渡されるパラメータ値。
p_filters データ・ソースに渡されるフィルタ。
p_order_bys データ・ソースに渡されるORDER BY式。
p_aggregation 問合せに基づいて適用する集計(GROUP BYDISTINCT)。
p_control_break コンテキスト・データをループする際にコントロール・ブレークを返すかどうか。
p_columns データソースから選択する列。
p_external_filter_expr 1:1で外部Webサービスに渡されるフィルタ式。使用されている実際のWebサービスに依存します。
p_external_order_by_expr 1:1で外部Webサービスに渡されるORDER BY式。使用されている実際のWebサービスに依存します。
p_first_row データ・ソースからフェッチする最初の行。
p_max_rows データ・ソースからフェッチする行の最大数。
p_total_row_count 総行数を求めるかどうか("allow fetch all rows"属性がYesである場合にのみサポートされます)。
p_array_column_name RESTソース・データ・プロファイル内の配列列の名前。

戻り値

RESTデータ・ソース問合せのcursorを表すコンテキスト・オブジェクト

次の例では、URLエンドポイントhttps://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/all_day.geojsonに基づいて、静的IDがUSGSのRESTデータ・ソースが共有コンポーネントに作成されていることを前提としています。この例では、RESTサービスを呼び出し、結果セットを出力しています。このサンプル・コードは、プラグイン内やExecute PL/SQLリージョン内で使用できます。

DECLARE 
    l_context apex_exec.t_context;
    l_filters apex_exec.t_filters;
    l_columns apex_exec.t_columns;

    l_row     pls_integer := 1;

    l_magidx  pls_integer;
    l_titidx  pls_integer;
    l_plcidx  pls_integer;
    l_timidx  pls_integer;
    l_ididx   pls_integer;
BEGIN
    l_context := apex_exec.open_rest_source_query(
        p_static_id     => 'USGS',            
        p_max_rows      => 1000 );

    l_titidx := apex_exec.get_column_position( l_context, 'TITLE' );
    l_magidx := apex_exec.get_column_position( l_context, 'MAG' );
    l_plcidx := apex_exec.get_column_position( l_context, 'PLACE' );
    l_timidx := apex_exec.get_column_position( l_context, 'TIME' );
    l_ididx  := apex_exec.get_column_position( l_context, 'ID' );

    while apex_exec.next_row( l_context ) LOOP

        htp.p( 'ID:    ' || apex_exec.get_varchar2( l_context, l_ididx  ) );
        htp.p( 'MAG:   ' || apex_exec.get_varchar2( l_context, l_magidx ) );
        htp.p( 'PLACE: ' || apex_exec.get_varchar2( l_context, l_plcidx ) );
        htp.p( 'TITLE: ' || apex_exec.get_varchar2( l_context, l_titidx ) );
        htp.p( 'TIME:  ' || apex_exec.get_varchar2( l_context, l_timidx ) );
     END LOOP;

     apex_exec.close( l_context );
EXCEPTION
     when others then
         apex_exec.close( l_context );
     RAISE;
END;