我可以在调用预言机过程后回滚吗?



我有一个调用 2 个内部proceduresprocedure,如果条件为真,我想rollback过程调用,这可能吗?

这个伪演示了我想做什么:

Create or Replace procedure Main
   Call procedure_1();
   Call procedure_2();
   IF X = true THEN
      ROLLBACK;
   END IF;
END Procedure Main;

你可以这样做Using SAVEPOINT With ROLLBACK

Create or Replace procedure Main
   SAVEPOINT sp_1;
   Call procedure_1();       
   Call procedure_2();
   IF X = true THEN
      ROLLBACK TO sp_1;
   END IF;
END Procedure Main;

注意:

如果存储过程具有类似createalterdroptruncate etc..的任何DDL statements,则savepoint将无效,因为 DDL 语句在语句前后发出commit

您可以回滚到当前事务中定义的savepoint,但不能在发出DDL statements/Commit后回滚到savepoint

最新更新