一旦我在T-SQL中回滚事务,有没有办法停止执行代码?例如,在下面的代码中,我想要打印“消息1”,而不是“消息2”。
BEGIN TRANSACTION
GO
PRINT 'Message 1'
ROLLBACK TRANSACTION
GO
PRINT 'Message 2'
GO
答案 0 :(得分:5)
GO
语句将批处理分开,这意味着即使第一个错误,下一批也会运行。我假设(你知道这意味着什么......),如果你有错误,你试图规避。
您可以查看GOTO
,并有一个错误处理块。或者你可以RETURN
;但是,这需要在同一个GO
块
示例:
GO
return
SELECT 'Test 1'
GO
SELECT 'Test 2'
GO
仍将返回测试2,但不会返回测试1。
答案 1 :(得分:3)
除了Mike关于GO关键字的陈述,您可以尝试这样的事情
BEGIN TRY
Begin Transaction
print 'Message1'
Select 1/0 --throws error
Commit Transaction
print 'Message2'
END TRY
BEGIN CATCH
rollback transaction
END CATCH
答案 2 :(得分:0)
如果它在SP或类似物中,您可以使用RETURN