oracle – TransactionScope和存储过程?
发布时间:2020-12-12 12:43:04 所属栏目:百科 来源:网络整理
导读:我有两个PL / SQL存储过程,每个过程处理自己的事务(如果发生错误,则开始/提交和回滚).来自.Net代码我将这两个SP称为如下所示. using (TransactionScope ts = new TransactionScope()) { CallSP1(); CallSP2(). ts.SetComplete(); } 如果我的SP2调用失败,它将
我有两个PL / SQL存储过程,每个过程处理自己的事务(如果发生错误,则开始/提交和回滚).来自.Net代码我将这两个SP称为如下所示.
using (TransactionScope ts = new TransactionScope()) { CallSP1(); CallSP2(). ts.SetComplete(); } 如果我的SP2调用失败,它将回滚CallSP1()所做的更改吗?如果它没有回滚那么这是否意味着更好地从.Net应用程序而不是在存储过程内处理事务? 解决方法如果第一个存储过程SP1发出提交,那么它已经进行的任何更改都将是永久性的.在这种情况下,如果SP2失败,SP1将进行的更改将不会回滚.IMO调用应用程序应该是处理事务逻辑的应用程序,即不在PL / SQL过程中发出提交或回滚.让错误传播到调用应用程序,这样PL / SQL引擎将只回滚失败过程而不是整个事务完成的工作. 让调用应用程序决定在出现错误时要做什么(重试,提交半工作?或回滚). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |