This chapter describes the Oracle Database-specific points that you should consider when using Oracle Database 10g release 2 (10.2) for BS2000/OSD under openUTM (Universal Transaction Monitor). The following topics are discussed in this chapter:
UTM application program units must use embedded SQL. Explicit calls to any SQLLIB
function calls or the Oracle Call Interface (OCI) are not allowed.
A connection is implicitly established when the UTM task is started. This connection uses the data specified in the open string. Further explicit CONNECT
operations issued by the program units are not allowed.
An explicit COMMIT
statement is not allowed in UTM program units. The openUTM will automatically issue one on a PEND RE
, FI
, SP
, or FC
operation.
An explicit ROLLBACK
statement is not allowed in UTM program units. The openUTM will automatically issue a ROLLBACK
statement on encountering a PEND ER
, RS
, FR,
or RSET
operation.
A cursor is valid only until a PEND
is run. Because of a possible task change during a PEND KP
, PA
, or PR
, you cannot perform operations on a previously filled cursor such as OPEN
or FETCH
after a PEND KP
, PA,
or PR
. However, you can open and fetch a new cursor after PEND KP
. The alternative to using PEND KP
is to use the PGWT-call (Refer to the openUTM manual, Programming Applications with KDCS for COBOL, C and C++), which will wait until input comes from the terminal, or to assign the same TACCLASS to subsequent programs after a PEND PA
or PR
.
You may use dynamic SQL as described in the relevant Oracle Database Programmer's Guide to the Oracle Precompilers.
COMMIT
, ROLLBACK
, CONNECT
, and SAVEPOINT
statements are not allowed in PL/SQL programs running under UTM.
Autocommit operations should be avoided because they violate the synchronization between Oracle Database and UTM transactions. Take care when using DDL operations, as these often contain implicit autocommits.
For example, DDL statements such as CREATE TABLE, DROP TABLE and CREATE INDEX are not allowed in a global transaction because they force pending work to be committed.
This section describes the Oracle Database-specific points that you should consider when using UTM operations. The points in this section refer to PEND
(Program Unit End) and RSET
(Reset) operations. These operations represent the common synchronization point between openUTM and the Oracle Database.
When you issue a PEND
call, UTM calls the Oracle Database internally for synchronization. When the PEND
takes place:
The user dialog/transaction is detached from the executing task
Any resource that is still attached to the user is released
Resetting a UTM transaction implies rolling back the Oracle Database transaction.
When using these calls to terminate a UTM transaction, the Oracle Database transaction is also rolled back.