我得到了这个解决方案
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.
我需要你的帮助。
由于
答案 0 :(得分:0)
发生错误并且由于代码中存在错误而未发生回滚。回滚和检查它应该是:
IF @@TRANCOUNT > 0
ROLLBACK
END CATCH
提交后,@@ TRANCOUNT将为零。如果发生错误,@@ TRANCOUNT将为1.在原始代码中,它不会触发回滚但它应该有。