【发布时间】:2013-11-04 11:24:22
【问题描述】:
我有一个 Oracle 包,它循环遍历一系列过程并动态调用它们。在每个过程调用之前,会创建一个 SAVEPOINT,如果引发异常,它会发出回滚并记录问题。最近引入了一个错误,其中一个动态过程添加了一个 COMMIT,当触发它时,会使 SAVEPOINT 无效。如果相同的过程随后失败(引发异常)并且调用包的异常处理程序尝试回滚,则在异常处理程序块内部引发以下异常:
ORA-01086: savepoint 'EXAMPLE_SAVEPOINT' never established in this session or is invalid
现在,我可以将 另一个 异常处理程序放在我的异常处理程序中,以处理这个特定的异常,但如果我可以快速检查 SAVEPOINT 以查看它是否是在尝试发出回滚之前立即有效或无效。这可能吗?
【问题讨论】:
标签: oracle transactions rollback savepoints