DBMS_DEFER
は、レプリケート・トランザクション遅延リモート・プロシージャ・コール機能のユーザー・インタフェースです。レプリケート・アプリケーションは、このインタフェースのコールを使用して、リモート・ノードでの後のトランザクション実行のためにプロシージャ・コールをキューに入れます。
通常こうしたプロシージャは、行トリガーの後、またはアプリケーション固有の更新プロシージャの後でコールされます。
この章には、次の項が含まれます。
表12-1 DBMS_DEFERパッケージのサブプログラム
サブプログラム | 説明 |
---|---|
|
リモート・プロシージャへの遅延コールを作成します。 |
|
正しく定義された遅延リモート・プロシージャ・コールのチェック後に、トランザクションのコミットを実行します。 |
|
遅延リモート・プロシージャ・コールに渡されるデータを提供します。 |
|
新しい遅延トランザクションの開始を示します。 |
このプロシージャは、リモート・プロシージャへの遅延コールを作成します。
構文
DBMS_DEFER.CALL ( schema_name IN VARCHAR2, package_name IN VARCHAR2, proc_name IN VARCHAR2, arg_count IN NATURAL, { nodes IN node_list_t | group_name IN VARCHAR2 :=''});
注意: このプロシージャはオーバーロードされています。nodes パラメータとgroup_name パラメータは、同時には指定できません。 |
パラメータ
パラメータ | 説明 |
---|---|
schema_name |
ストアド・プロシージャが置かれたスキーマの名前です。 |
package_name |
ストアド・プロシージャを含むパッケージの名前です。ストアド・プロシージャはパッケージの一部になります。スタンドアロン・プロシージャへの遅延コールはサポートされていません。 |
proc_name |
コールを遅らせる、リモート・プロシージャの名前です。 |
arg_count |
プロシージャのパラメータ数です。これらの各パラメータにつき1回、 注意: 一部のパラメータがデフォルトである場合でも、プロシージャのパラメータをすべて数に含める必要があります。 |
nodes |
遅延コールを伝播する、完全修飾されたデータベース名のPL/SQL連想配列です。表の索引付けは、1の位置から始まり、 |
group_name |
内部使用に予約されています。 |
このプロシージャは、遅延リモート・プロシージャ・コールに渡すデータを提供します。遅延リモート・プロシージャに渡す必要があるデータ型に応じて、次に示すプロシージャのいずれかをコールする必要があります。
DBMS_DEFER.CALL
を実行した後、プロシージャの各パラメータを、datatype_
ARG
プロシージャを使用して指定する必要があります。すなわち、遅延リモート・プロシージャ・コールにはデフォルト・パラメータを使用できません。たとえば、次のようなプロシージャがあるとします。
CREATE OR REPLACE PACKAGE my_pack AS PROCEDURE my_proc(a VARCHAR2, b VARCHAR2 DEFAULT 'SALES'); END; /
DBMS_DEFER.CALL
プロシージャを実行するときは、パラメータごとに個別のプロシージャ・コールをmy_proc
プロシージャに組み込む必要があります。
CREATE OR REPLACE PROCEDURE load_def_tx IS node DBMS_DEFER.NODE_LIST_T; BEGIN node(1) := 'MYCOMPUTER.EXAMPLE.COM'; node(2) := NULL; DBMS_DEFER.TRANSACTION(node); DBMS_DEFER.CALL('PR', 'MY_PACK', 'MY_PROC', 2); DBMS_DEFER.VARCHAR2_ARG('TEST'); DBMS_DEFER.VARCHAR2_ARG('SALES'); -- required, cannot omit to use default END; /
注意:
|
構文
DBMS_DEFER.ANYDATA_ARG (arg IN ANYDATA); DBMS_DEFER.NUMBER_ARG (arg IN NUMBER); DBMS_DEFER.DATE_ARG (arg IN DATE); DBMS_DEFER.VARCHAR2_ARG (arg IN VARCHAR2); DBMS_DEFER.CHAR_ARG (arg IN CHAR); DBMS_DEFER.ROWID_ARG (arg IN ROWID); DBMS_DEFER.RAW_ARG (arg IN RAW); DBMS_DEFER.BLOB_ARG (arg IN BLOB); DBMS_DEFER.CLOB_ARG (arg IN CLOB); DBMS_DEFER.NCLOB_ARG (arg IN NCLOB); DBMS_DEFER.NCHAR_ARG (arg IN NCHAR); DBMS_DEFER.NVARCHAR2_ARG (arg IN NVARCHAR2); DBMS_DEFER.ANY_CLOB_ARG (arg IN CLOB); DBMS_DEFER.ANY_VARCHAR2_ARG (arg IN VARCHAR2); DBMS_DEFER.ANY_CHAR_ARG (arg IN CHAR); DBMS_DEFER.IDS_ARG (arg IN DSINTERVAL_UNCONSTRAINED); DBMS_DEFER.IYM_ARG (arg IN YMINTERVAL_UNCONSTRAINED); DBMS_DEFER.TIMESTAMP_ARG (arg IN TIMESTAMP_UNCONSTRAINED); DBMS_DEFER.TSLTZ_ARG (arg IN TIMESTAMP_LTZ_UNCONSTRAINED); DBMS_DEFER.TSTZ_ARG (arg IN TIMESTAMP_TZ_UNCONSTRAINED);