Oracle8i Supplied Packages Reference
Release 8.1.5

A68001-01

Library

Product

Contents

Index

Prev Next

8
DBMS_DEFER

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 routines are typically called from either after row triggers or application specified update procedures.

Summary of Subprograms

Table 8-1 DBMS_DEFER Package Subprograms
Subprogram  Description 
CALL procedure
 

Builds a deferred call to a remote procedure.  

COMMIT_WORK procedure
 

Performs a transaction commit after checking for well-formed deferred remote procedure calls.  

datatype_ARG procedure
 

Provides the data that is to be passed to a deferred remote procedure call.  

TRANSACTION procedure
 

Indicates the start of a new deferred transaction.  

CALL procedure

This procedure builds a deferred call to a remote procedure.

Syntax

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 :=''});

Parameters

Table 8-2 CALL Procedure Parameters
Parameter  Description 
schema_name
 

Name of the schema in which the stored procedure is located.  

package_name
 

Name of the package containing the stored procedure. The stored procedure must be part of a package. Deferred calls to standalone procedures are not supported.  

proc_name
 

Name of the remote procedure to which you want to defer a call.  

arg_count
 

Number of parameters for the procedure. You must have one call to DBMS_DEFER.datatype_ARG for each of these parameters.  

nodes
 

A PL/SQL table of fully qualified database names to which you want to propagate the deferred call. The table is indexed starting at position 1 and ending when a NULL entry is found, or the NO_DATA_FOUND exception is raised. The data in the table is case insensitive. This argument is optional.  

group_name
 

Reserved for internal use.  


Note:

The CALL procedure is overloaded. The nodes and group_name parameters are mutually exclusive.  


Exceptions

Table 8-3 CALL Procedure Exceptions
Exception  Description 
ORA-23304 
(malformedcall)
 

Previous call was not correctly formed.  

ORA-23319
 

Parameter value is not appropriate.  

ORA-23352
 

Destination list (specified by nodes or by a previous DBMS_DEFER.TRANSACTION call) contains duplicates.  

COMMIT_WORK procedure

This procedure performs a transaction commit after checking for well-formed deferred remote procedure calls.

Syntax

DBMS_DEFER.COMMIT_WORK (
   commit_work_comment IN VARCHAR2);

Parameters

Table 8-4 COMMIT_WORK Procedure Parameters
Parameter  Description 
commit_work_comment
 

Equivalent to SQL COMMIT COMMENT statement.  

Exceptions

Table 8-5 COMMIT_WORK Procedure Exceptions
Exception  Description 
ORA-23304 
(malformedcall)
 

Transaction was not correctly formed or terminated.  

datatype_ARG procedure

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.

Syntax

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);

Parameters

Table 8-6 datatype_ARG Procedure Parameters
Parameter  Description 
arg
 

Value of the parameter that you want to pass to the remote procedure to which you previously deferred a call.  

Exceptions

Table 8-7 datatype_ARG Procedure Exceptions
Exception  Description 
ORA-23323
 

Argument value is too long.  

TRANSACTION procedure

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.

Syntax

DBMS_DEFER.TRANSACTION (
   nodes  IN   node_list_t);

Parameters

Table 8-8 TRANSACTION Procedure Parameters
Parameter  Description 
nodes
 

A PL/SQL table of fully qualified database names to which you want to propagate the deferred calls of the transaction. The table is indexed starting at position 1 until a NULL entry is found, or the NO_DATA_FOUND exception is raised. The data in the table is case insensitive.  

Exceptions

Table 8-9 TRANSACTION Procedure Exceptions
Exception  Description 
ORA-23304 
(malformedcall)
 

Previous transaction was not correctly formed or terminated.  

ORA-23319
 

Parameter value is not appropriate.  

ORA-23352
 

Raised by DBMS_DEFER.CALL if the node list contains duplicates.  

Usage Notes

The TRANSACTION procedure is overloaded. The behavior of the version without an input parameter is similar to that of the version with an input parameter, except that the former uses the nodes in the DEFDEFAULTDEST view instead of using the nodes in the nodes parameter.




Prev

Next
Oracle
Copyright © 1999 Oracle Corporation.

All Rights Reserved.

Library

Product

Contents

Index