多了怕各位看起来麻烦贴90行这一段吧
-------------------------------------------------------
CLOSE OrderProgramCursor
DEALLOCATE OrderProgramCursor
PRINT '22 @@TRANCOUNT='+CONVERT(VARCHAR,@@TRANCOUNT)
ROLLBACK TRANSACTION
PRINT '23 @@TRANCOUNT='+CONVERT(VARCHAR,@@TRANCOUNT)
RETURN -------------------------------------------------------
PRINT 是我刚加上的
结果是
22 @@TRANCOUNT=2
23 @@TRANCOUNT=0
也就是说
执行 ROLLBACK TRANSACTION
以后
@@TRANCOUNT直接从2变到0为什么不是1!!
-------------------------------------------------------
CLOSE OrderProgramCursor
DEALLOCATE OrderProgramCursor
PRINT '22 @@TRANCOUNT='+CONVERT(VARCHAR,@@TRANCOUNT)
ROLLBACK TRANSACTION
PRINT '23 @@TRANCOUNT='+CONVERT(VARCHAR,@@TRANCOUNT)
RETURN -------------------------------------------------------
PRINT 是我刚加上的
结果是
22 @@TRANCOUNT=2
23 @@TRANCOUNT=0
也就是说
执行 ROLLBACK TRANSACTION
以后
@@TRANCOUNT直接从2变到0为什么不是1!!
@@TRANCOUNT
返回当前连接的活动事务数。语法
@@TRANCOUNT返回类型
integer注释
BEGIN TRANSACTION 语句使 @@TRANCOUNT 递增 1。ROLLBACK TRANSACTION 将 @@TRANCOUNT 递减为 0,但 ROLLBACK TRANSACTION savepoint_name 语句并不影响 @@TRANCOUNT 值。COMMIT TRANSACTION 或 COMMIT WORK 将 @@TRANCOUNT 递减 1。示例
下面的示例用 @@TRANCOUNT 测试应该提交的打开事务。BEGIN TRANSACTION
UPDATE authors SET au_lname = upper(au_lname)
WHERE au_lname = 'White'
IF @@ROWCOUNT = 2
COMMIT TRANIF @@TRANCOUNT > 0
BEGIN
PRINT 'A transaction needs to be rolled back'
ROLLBACK TRAN
END
请参见BEGIN TRANSACTIONCOMMIT TRANSACTIONROLLBACK TRANSACTION系统函数©1988-2000 Microsoft Corporation。保留所有权利。