Terminates a transaction and undoes all changes that have been made to the database since the program's most recent START_ TRANSACTION statement. The ROLLBACK statement also closes all open streams and releases all locks. The ROLLBACK statement affects both data manipulation and data definition statements. Example: RDO> START_TRANSACTION READ_WRITE RDO> DEFINE FIELD LOCATION_CODE DATATYPE TEXT SIZE 5. RDO> ! Oops, wrong size! RDO> ROLLBACK RDO> START_TRANSACTION READ_WRITE RDO> DEFINE FIELD LOCATION_CODE DATATYPE TEXT SIZE 7. RDO> COMMIT
1 – Format
(B)0[m[4mROLLBACK[m qqwqqqqqqqqqqqqqqqqqqqqqqq>qqqqqqqqqqwqwqqqqqqqqqqqqqqqqwqqq> mq> ([4mTRANSACTION_HANDLE[m qq> var) qqj mqq> on-error qqqj
1.1 – TRANSACTION_HANDLE
A keyword followed by a host language variable. A transaction handle identifies each instance of a transaction. If you do not declare the transaction handle explicitly, Oracle Rdb attaches an internal identifier to the transaction. In Callable RDO, use !VAL as a marker for host language variables. You can put parentheses around the host language variable name. Normally, you do not need to use this argument. The ability to declare a transaction handle is provided for compatibility with other database products and future releases of Oracle Rdb.
1.2 – on-error
The ON ERROR clause, which specifies a host language statement to be performed if an Oracle Rdb error occurs. For more details, request HELP on ON_ERROR.
2 – More
If you have invoked a database, you have the necessary privileges to use the ROLLBACK statement.
3 – Example
Roll back changes made during a transaction with a COBOL program: GET-ID-NUMBER. DISPLAY "Enter employee ID number: " WITH NO ADVANCING. ACCEPT EMPLOYEE-ID. CHANGE-SALARY. DISPLAY "Enter new salary amount: " WITH NO ADVANCING. ACCEPT SALARY-AMOUNT. &RDB& START_TRANSACTION READ_WRITE &RDB& FOR S IN SALARY_HISTORY WITH &RDB& E.EMPLOYEE-ID = EMPLOYEE-ID &RDB& MODIFY USING &RDB& S.SALARY-AMOUNT = SALARY-AMOUNT &RDB& END-MODIFY &RDB& END-FOR DISPLAY EMPLOYEE-ID, SALARY-AMOUNT. DISPLAY "Is this figure correct? [Y or N] " WITH NO ADVANCING. ACCEPT ANSWER. IF ANSWER = "Y" THEN &RDB& COMMIT ELSE &RDB& ROLLBACK DISPLAY "Please enter the new salary amount again." GO TO CHANGE-SALARY.