Before V5R2, SQL stored procedures that contained atomic compound-statements automatically issued a Rollback statement if the procedure encountered any errors during execution and a Commit statement if the procedure executed successfully. For example, if the Delete statement failed in the V5R1 procedure below, DB2 would issue a Rollback statement, and both the Insert and Delete statements would be rolled back. If both the Insert and Delete statements were successful, a Commit statement would be executed at the end of the stored procedure on pre-V5R2 systems.
LANGUAGE SQL
BEGIN ATOMIC
INSERT INTO t1 VALUES (parm1,’A’);
DELETE FROM t2 WHERE c1=33;
END
The implementation of atomic compound-statements changed in V5R2. However, this implementation change will not affect SQL procedures until they are re-created on a V5R2 system. Any existing atomic SQL stored procedure will continue to run as expected until that procedure is re-created on a V5R2 system. The V5R2 atomic implementation change requires the programmer to either add a COMMIT ON RETURN YES clause to the SQL stored procedure definition or change the invoking application to be responsible for committing or rolling back any changes made by the stored procedure.
The source for the V5R2Procedure shows how to add the COMMIT ON RETURN YES clause to maintain the pre-V5R2 behavior of an atomic SQL stored procedure.
LANGUAGE SQL
COMMIT ON RETURN YES
BEGIN ATOMIC
INSERT INTO t1 VALUES (parm1,’A’);
DELETE FROM t2 WHERE c1=33;
END
A good resource for learning more about SQL stored procedures is the Stored Procedures and Triggers on DB2 UDB for iSeries Redbook, which can be found online at ibm.com/redbooks.
Kent Milligan is DB2 UDB Technology Specialist on IBM's eServer Solutions Enablement team. He spent the first seven years at IBM as a member of the DB2 development team in Rochester. He can be reached at
LATEST COMMENTS
MC Press Online