19.35 OPEN_REMOTE_SQL_QUERYファンクション
このファンクションは、問合せコンテキストを開き、ORDS REST対応SQLインスタンスに対して指定されたSQL問合せを実行します。
構文
FUNCTION OPEN_REMOTE_SQL_QUERY(
    p_server_static_id      IN VARCHAR2,
    p_sql_query             IN VARCHAR2,
    p_sql_parameters        IN t_parameters DEFAULT c_empty_parameters,
    p_auto_bind_items       IN BOOLEAN      DEFAULT TRUE,
    --
    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_total_row_count_limit IN PLS_INTEGER  DEFAULT NULL )
    RETURN t_context;パラメータ
表19-33 OPEN_REMOTE_SQL_QUERYファンクションのパラメータ
| パラメータ | 説明 | 
|---|---|
| 
 | ORDS REST対応SQLインスタンスの静的IDです。 | 
| 
 | 実行するSQL問合せ。 | 
| 
 | リモート・サーバーに渡すバインド変数。 | 
| 
 | すべてのページ・アイテムを自動的にバインドするかどうか。 | 
| 
 | 結果セットからフェッチする最初の行。 | 
| 
 | フェッチする行の最大数。 | 
| 
 | 総行数を求めるかどうか。 | 
| 
 | 総行数計算の上限値。 | 
戻り値
Webソース問合せのカーソルを表すコンテキスト・オブジェクト。
例
次の例では、REST対応ORDSインスタンスが静的ID My_Remote_SQL_Instanceで共有コンポーネントに構成されていることを前提としています。それに基づいて、リモート・サーバーに問合せを実行し、結果セットを出力します。このサンプル・コードは、プラグイン内や「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_remote_sql_query(
         p_server_static_id   => 'My_Remote_SQL_Instance',
         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
          htp.p( 'EMPNO: ' || apex_exec.get_number  ( l_context, l_idx_empno    ) ); 
          htp.p( 'ENAME: ' || apex_exec.get_varchar2( l_context, l_idx_ename    ) );
          htp.p( 'MGR:   ' || apex_exec.get_number  ( l_context, l_idx_mgr      ) );
    end loop;
    apex_exec.close( l_context );
    return;
exception
    when others then
         apex_debug.log_exception;
         apex_exec.close( l_context );
    raise;    
end;親トピック: APEX_EXEC