如何回滚在 db2 中调用另一个过程的存储过程的事务
how to rollback the transaction of a stored Procedure calling in another procedure in db2
我正在将存储过程调用到另一个存储过程中,现在如果第一个存储过程出现任何错误,那么我想回滚该存储过程的事务,因为 DB2 在调用完成后提交存储过程的事务。
那么怎么做呢?
根据您的描述,听起来您的应用程序执行 CALL B()
。并且存储过程B
执行CALL A()
语句。
除非任一存储过程包含 COMMIT
语句(这违反最佳实践),否则由调用应用程序确定 CALL B()
语句是否成功,并决定是否发布 COMMIT
或 ROLLBACK
声明。执行 ROLLBACK
应该回滚 any/all 由 B
和 A
所做的更改。
我正在将存储过程调用到另一个存储过程中,现在如果第一个存储过程出现任何错误,那么我想回滚该存储过程的事务,因为 DB2 在调用完成后提交存储过程的事务。
那么怎么做呢?
根据您的描述,听起来您的应用程序执行 CALL B()
。并且存储过程B
执行CALL A()
语句。
除非任一存储过程包含 COMMIT
语句(这违反最佳实践),否则由调用应用程序确定 CALL B()
语句是否成功,并决定是否发布 COMMIT
或 ROLLBACK
声明。执行 ROLLBACK
应该回滚 any/all 由 B
和 A
所做的更改。