0

我从我发布的问题中得到了我的一个问题的答案点击这里

我得到了这个解决方案

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。

我需要你的帮助。

谢谢

4

1 回答 1

0

发生错误并且没有发生回滚,因为代码中存在错误。回滚和检查应该是:

IF @@TRANCOUNT > 0
    ROLLBACK
 END CATCH

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

于 2013-02-21T22:59:14.710 回答