15.30 OPEN_REMOTE_DML_CONTEXTファンクション
このファンクションは、リモート・データベースに基づいてDMLコンテキストを開きます。
構文
function open_remote_dml_context (
p_server_static_id in varchar2,
--
p_columns in t_columns default c_empty_columns,
p_query_type in t_query_type,
--
p_table_owner in varchar2 default null,
p_table_name in varchar2 default null,
p_where_clause in varchar2 default null,
--
p_sql_query in varchar2 default null,
p_plsql_function_body in varchar2 default null,
--
p_with_check_option in boolean default true,
p_optimizer_hint in varchar2 default null,
--
p_dml_table_owner in varchar2 default null,
p_dml_table_name in varchar2 default null,
p_dml_plsql_code in varchar2 default null,
--
p_lost_update_detection in t_lost_update_detection default null,
p_lock_rows in t_lock_rows default null,
p_lock_plsql_code in varchar2 default null,
--
p_sql_parameters in t_parameters default c_empty_parameters ) return t_context;
パラメータ
表15-28 OPEN_REMOTE_DML_CONTEXTファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
ORDS REST対応SQLインスタンスの静的IDです。 |
|
データ・ソースに渡すDML列。 |
|
データ・ソースに渡すDML列。データ・ソースのタイプを示します。使用可能な値は次のとおりです。
|
|
問合せタイプTABLEの場合: 表の所有者 |
|
問合せタイプTABLEの場合: 表名 |
|
問合せ型TABLEの場合: WHERE句 |
p_sql_query |
問合せタイプSQL QUERYの場合: 問合せ |
|
問合せタイプPLSQLの場合: SQL問合せを返すPL/SQLファンクション |
|
WITH CHECK OPTIONをデータ・ソースに追加するかどうかを指定します。 |
|
DML句に追加するオプティマイザ・ヒント |
|
設定した場合、DML文がこの表に対して実行されます |
|
設定した場合、DML文がこの表に対して実行されます |
|
DML文のかわりに実行されるカスタムPL/SQLコード |
|
ロストアップデートの検出タイプ。使用可能な値は次のとおりです。
|
|
ロストアップデート検出から実際のDML文までの(短い)時間に行をロックするかどうかを指定します。使用可能な値は次のとおりです。
|
|
行のロックに使用するカスタムPL/SQLコード |
|
使用するバインド変数 |
例
次の例は、REST対応SQLサービスのEMP表に1つの行を挿入しています。
declare
l_columns apex_exec.t_columns;
l_context apex_exec.t_context;
begin
-- I. Define DML columns
apex_exec.add_column(
p_columns => l_columns,
p_column_name => 'EMPNO',
p_data_type => apex_exec.c_data_type_number,
p_is_primary_key => true );
apex_exec.add_column(
p_columns => l_columns,
p_column_name => 'ENAME',
p_data_type => apex_exec.c_data_type_varchar2 );
apex_exec.add_column(
p_columns => l_columns,
p_column_name => 'JOB',
p_data_type => apex_exec.c_data_type_varchar2 );
apex_exec.add_column(
p_columns => l_columns,
p_column_name => 'HIREDATE',
p_data_type => apex_exec.c_data_type_date );
apex_exec.add_column(
p_columns => l_columns,
p_column_name => 'MGR',
p_data_type => apex_exec.c_data_type_number );
apex_exec.add_column(
p_columns => l_columns,
p_column_name => 'SAL',
p_data_type => apex_exec.c_data_type_number );
apex_exec.add_column(
p_columns => l_columns,
p_column_name => 'COMM',
p_data_type => apex_exec.c_data_type_number );
apex_exec.add_column(
p_columns => l_columns,
p_column_name => 'DEPTNO',
p_data_type => apex_exec.c_data_type_number );
-- II. Open the context object
l_context := apex_exec.open_remote_dml_context(
p_server_static_id => '{remote server static id}',
p_columns => l_columns,
p_query_type => apex_exec.c_query_type_sql_query,
p_sql_query => 'select * from emp where deptno = 10',
p_lost_update_detection => apex_exec.c_lost_update_none );
-- III. Provide DML data
apex_exec.add_dml_row(
p_context => l_context,
p_operation => apex_exec.c_dml_operation_insert );
apex_exec.set_value(
p_context => l_context,
p_column_position => 1,
p_value => 4711 );
apex_exec.set_value(
p_context => l_context,
p_column_position => 2,
p_value => 'DOE' );
apex_exec.set_value(
p_context => l_context,
p_column_position => 3,
p_value => 'DEVELOPR' );
apex_exec.set_value(
p_context => l_context,
p_column_position => 4,
p_value => sysdate );
apex_exec.set_value(
p_column_position => 6,
p_value => 1000 );
apex_exec.set_value(
p_context => l_context,
p_column_position => 8,
p_value => 10 );
-- IV: Execute the DML statement
apex_exec.execute_dml(
p_context => l_context,
p_continue_on_error => false);
apex_exec.close( l_context );
exception
when others then
apex_exec.close( l_context );
raise;
end;
戻り値
DMLハンドルを表すコンテキスト・オブジェクト。
親トピック: APEX_EXEC