2010-08-05 60 views
0

有一种方法可以在T-SQL中ROLLBACK一个事务后停止执行代码吗?例如,在下面的代码中,我想要'邮件1'打印,但不是'邮件2'。当ROLLBACK一个SQL事务时停止执行

BEGIN TRANSACTION 
GO 
PRINT 'Message 1' 
ROLLBACK TRANSACTION 
GO 
PRINT 'Message 2' 
GO 

回答

5

GO语句分离批,这意味着即使第一个错误,下一批将运行。我假设(你知道这意味着什么......),如果你有错误,你试图规避。

你可以看看GOTO,并有一个错误处理块。或者你可以只有一个RETURN;然而,这需要相同GO块内

例子:

GO 
    return 
    SELECT 'Test 1' 
GO 
    SELECT 'Test 2' 
GO 

仍然会返回测试2,但没有测试1.

0

如果是在SP或类似的,你可以使用RETURN

3

除了麦克的关于GO关键字你可以声明尝试像这样

BEGIN TRY 
Begin Transaction 
    print 'Message1' 
    Select 1/0 --throws error 
Commit Transaction 
print 'Message2' 
END TRY 
BEGIN CATCH 
rollback transaction 
END CATCH 
相关问题