有一种方法可以在T-SQL中ROLLBACK一个事务后停止执行代码吗?例如,在下面的代码中,我想要'邮件1'打印,但不是'邮件2'。当ROLLBACK一个SQL事务时停止执行
BEGIN TRANSACTION
GO
PRINT 'Message 1'
ROLLBACK TRANSACTION
GO
PRINT 'Message 2'
GO
有一种方法可以在T-SQL中ROLLBACK一个事务后停止执行代码吗?例如,在下面的代码中,我想要'邮件1'打印,但不是'邮件2'。当ROLLBACK一个SQL事务时停止执行
BEGIN TRANSACTION
GO
PRINT 'Message 1'
ROLLBACK TRANSACTION
GO
PRINT 'Message 2'
GO
的GO
语句分离批,这意味着即使第一个错误,下一批将运行。我假设(你知道这意味着什么......),如果你有错误,你试图规避。
你可以看看GOTO
,并有一个错误处理块。或者你可以只有一个RETURN
;然而,这需要相同GO
块内
例子:
GO
return
SELECT 'Test 1'
GO
SELECT 'Test 2'
GO
仍然会返回测试2,但没有测试1.
如果是在SP或类似的,你可以使用RETURN
除了麦克的关于GO关键字你可以声明尝试像这样
BEGIN TRY
Begin Transaction
print 'Message1'
Select 1/0 --throws error
Commit Transaction
print 'Message2'
END TRY
BEGIN CATCH
rollback transaction
END CATCH