oracle – TransactionScope和存储过程?

前端之家收集整理的这篇文章主要介绍了oracle – TransactionScope和存储过程?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有两个PL / sql存储过程,每个过程处理自己的事务(如果发生错误,则开始/提交和回滚).来自.Net代码我将这两个SP称为如下所示.

using (TransactionScope ts = new TransactionScope())
     {
          CallSP1();
          CallSP2().
          ts.SetComplete();
     }

如果我的SP2调用失败,它将回滚CallSP1()所做的更改吗?如果它没有回滚那么这是否意味着更好地从.Net应用程序而不是在存储过程内处理事务?

解决方法

如果第一个存储过程SP1发出提交,那么它已经进行的任何更改都将是永久性的.在这种情况下,如果SP2失败,SP1将进行的更改将不会回滚.

IMO调用应用程序应该是处理事务逻辑的应用程序,即不在PL / sql过程中发出提交或回滚.让错误传播到调用应用程序,这样PL / sql引擎将只回滚失败过程而不是整个事务完成的工作.

调用应用程序决定在出现错误时要做什么(重试,提交半工作?或回滚).

猜你在找的Oracle相关文章