begin transaction

Description

Marks the starting point of an unchained transaction.

Syntax

exec sql [at connection_name] 
 begin {transaction | tran} [transaction_name] 
 end-exec

Parameters

transaction | tran

The keywords transaction and tran are interchangeable.

transaction_name

The name that you are assigning to this transaction. The name must conform to the rules for Transact-SQL identifiers.

Examples

Example 1

  * 
   * Use explicit transactions to synchronize tables on 
   * two servers.
   *
 
      EXEC SQL BEGIN DECLARE SECTION END-EXEC.
           01     TITLE-ID     PIC X(6).
           01     NUM-SOLD     PIX S9(9) COMP.
      EXEC SQL END DECLARE SECTION END-EXEC.
 
            ...
 
      EXEC SQL WHENEVER SQLERROR PERFORM ABORT-TRAN END-EXEC.
      
         EXEC SQL CONNECT :UID IDENTIFIED BY :PASS
                                 AT connect1  END-EXEC.
         EXEC SQL CONNECT :UID IDENTIFIED BY :PASS
                                 AT connect2 END-EXEC.
 
      PERFORM TRY-UPDATE.
 
      TRY-UPDATE.
      EXEC SQL AT connect1 BEGIN TRANSACTION END-EXEC.
      EXEC SQL AT connect2 BEGIN TRANSACTION END-EXEC.
 
      EXEC SQL AT connect1 SELECT  sum(qty) INTO :NUM-SOLD
            FROM salesdetail
            WHERE title_id = :TITLE-ID END-EXEC.
 
      EXEC SQL AT connect2 UPDATE current_sales
            SET num_sold = :NUM-SOLD 
            WHERE title_id = :TITLE-ID END-EXEC.
      
      EXEC SQL AT connect2 COMMIT TRANSACTION END-EXEC.
      EXEC SQL AT connect1 COMMIT TRANSACTION END-EXEC.
      
      IF SQLCODE <> 0
           DISPLAY "OOPS! Should have used 2-phase commit".
           
 
      ABORT-TRAN.
      EXEC SQL WHENEVER SQLERROR CONTINUE END-EXEC.
         DISPLAY "Error code is " SQLCODE.
         DISPLAY "Error message is " SQLERRMC.
      EXEC SQL AT connect2 ROLLBACK TRANSACTION END-EXEC.
      EXEC SQL AT connect1 ROLLBACK TRANSACTION END-EXEC.
      PERFORM TRY-UPDATE.

Usage

See also

commit transaction, commit work, rollback transaction, rollback work