[英]Stop execution when ROLLBACK an SQL transaction
一旦我在T-SQL中回滾事務,是否有辦法停止執行代碼? 例如,在下面的代碼中,我希望打印“消息1”,而不是“消息2”。
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。
除了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
如果在SP或類似版本中,則可以使用RETURN
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.