【问题标题】:Commit and Rollback is not working in stored procedure提交和回滚在存储过程中不起作用
【发布时间】:2013-02-21 22:39:24
【问题描述】:

我从Click HereClick Here发布的问题中得到了我的一个问题的答案

我得到了这个解决方案

BEGIN TRY
BEGIN TRANSACTION 
    exec( @sqlHeader)
    exec(@sqlTotals)
    exec(@sqlLine)
COMMIT
 END TRY
 BEGIN CATCH

IF @@TRANCOUNT > 1
    ROLLBACK
 END CATCH

得到解决方案后,我面临一个新问题,即存储过程第一次执行时运行良好,之后出现以下错误

EXECUTE 之后的事务计数表明 BEGIN 和 COMMIT 语句的数量不匹配。先前计数 = 1,当前计数 = 0。

我需要你的帮助。

谢谢

【问题讨论】:

  • 您使用的是哪个版本的 SQL Server?请删除您不使用的版本的标签。
  • 好的。我正在使用 2008-r2

标签: sql stored-procedures sql-server-2008-r2


【解决方案1】:

由于代码中存在错误,正在发生错误并且未发生回滚。回滚和检查应该是:

IF @@TRANCOUNT > 0
    ROLLBACK
 END CATCH

提交后,@@TRANCOUNT 将为零。如果发生错误,@@TRANCOUNT 将为 1。在原始代码中,这并没有触发回滚,但它应该有。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-06
    • 2015-02-25
    • 2020-09-19
    • 1970-01-01
    • 1970-01-01
    • 2014-04-07
    • 2021-02-28
    相关资源
    最近更新 更多