我有procedure
调用2内procedures
,如果条件为真,我想rollback
程序调用,这可能吗?
这个伪示范我想做的事情:
Create or Replace procedure Main
Call procedure_1();
Call procedure_2();
IF X = true THEN
ROLLBACK;
END IF;
END Procedure Main;
答案 0 :(得分:2)
您可以执行此操作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;
注意:
如果您的存储过程中有DDL statements
create\alter\drop\truncate etc..
,则savepoint
将无效,因为DDL语句在语句之前和之后发出commit
。 / p>
您可以回滚到当前交易中定义的savepoint
,发出savepoint
后无法回滚到DDL statements/Commit
。