当前位置: 代码迷 >> Sql Server >> 关于事务
  详细解决方案

关于事务

热度:57   发布时间:2016-04-24 09:25:57.0
求助关于事务
本帖最后由 dsa88885555 于 2015-01-23 09:39:54 编辑

我在存储过程添加了事务 @finalAccept_No是返回值

下面这样写可以吗 
set @finalAccept_No='2'
IF ( @errorSum <> 0 )
BEGIN
print 'ROLLBACK'+cast(@errorSum as varchar(50))
ROLLBACK TRAN  sale_2014_12_19
END
ELSE
BEGIN
print 'commit'+cast(@errorSum as varchar(50))
commit TRAN  sale_2014_12_19
END
return

或者 这样写?
IF ( @errorSum <> 0 )
BEGIN
print 'ROLLBACK'+cast(@errorSum as varchar(50))
ROLLBACK TRAN  sale_2014_12_19
END
ELSE
BEGIN
print 'commit'+cast(@errorSum as varchar(50))
commit TRAN  sale_2014_12_19
END
set @finalAccept_No='2'
return

两者有区别吗
就是 返回值取值放着--根据是否有错误,确定事务是提交还是回滚--*/ 前和后有区别吗?会不会导致存储过程执行失败。
------解决思路----------------------
事务递交/回滚不影响存储过程的语句执行,当然不影响变量的赋值。
------解决思路----------------------
回滚只是对数据的操作,于你变量的赋值没有关系,效果不同于RETURN
  相关解决方案