Oracle9i Replication Management API Reference Release 2 (9.2) Part Number A96568-01 |
|
DBMS_DEFER
is the user interface to a replicated transactional deferred remote procedure call facility. Replicated applications use the calls in this interface to queue procedure calls for later transactional execution at remote nodes.
These procedures are typically called from either after row triggers or application specified update procedures.
This chapter discusses the following topic:
This procedure builds a deferred call to a remote procedure.
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 :=''});
This procedure performs a transaction commit after checking for well-formed deferred remote procedure calls.
DBMS_DEFER.COMMIT_WORK ( commit_work_comment IN VARCHAR2);
Parameter | Description |
---|---|
commit_work_comment |
Equivalent to the |
Exception | Description |
---|---|
ORA-23304 (malformedcall) |
Transaction was not correctly formed or terminated. |
This procedure provides the data that is to be passed to a deferred remote procedure call. Depending upon the type of the data that you need to pass to a procedure, you must call one of the following procedures for each argument to the procedure.
You must specify each parameter in your procedure using the datatype_
ARG
procedure after you execute DBMS_DEFER.CALL
. That is, you cannot use the default parameters for the deferred remote procedure call. For example, suppose you have the following procedure:
CREATE OR REPLACE PACKAGE my_pack AS PROCEDURE my_proc(a VARCHAR2, b VARCHAR2 DEFAULT 'SALES'); END; /
When you run the DBMS_DEFER.CALL
procedure, you must include a separate procedure call for each parameter in the my_proc
procedure:
CREATE OR REPLACE PROCEDURE load_def_tx IS node DBMS_DEFER.NODE_LIST_T; BEGIN node(1) := 'MYCOMPUTER.WORLD'; 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;
Note:
|
DBMS_DEFER.AnyData_ARG (arg IN SYS.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);
Parameter | Description |
---|---|
arg |
Value of the parameter that you want to pass to the remote procedure to which you previously deferred a call. |
Exception | Description |
---|---|
ORA-23323 |
Argument value is too long. |
This procedure indicates the start of a new deferred transaction. If you omit this call, then Oracle considers your first call to DBMS_DEFER
.CALL
to be the start of a new transaction.
DBMS_DEFER.TRANSACTION ( nodes IN node_list_t);
|
Copyright © 1996, 2002 Oracle Corporation. All Rights Reserved. |
|