可以使用 TRY...CATCH 構造(類似於 Microsoft Visual C++ 和 Microsoft Visual C# 語言的異常處理功能)來處理 Transact-SQL 代碼中的錯誤。TRY…CATCH 構造包括兩部分:一個 TRY 塊和一個 CATCH 塊。如果在 TRY 塊中所包含的 Transact-SQL 語句中檢測到錯誤條件,控制將被傳遞到 CATCH 塊(可在此塊中處理該錯誤)。
CATCH 塊處理該異常錯誤後,控制將被傳遞到 END CATCH 語句後面的第一個 Transact-SQL 語句。如果 END CATCH 語句是存儲過程或觸發器中的最後一條語句,控制將返回到調用該存儲過程或觸發器的代碼。將不執行 TRY 塊中生成錯誤的語句後面的 Transact-SQL 語句。
ERROR_NUMBER() 返回錯誤號。ERROR_MESSAGE() 返回錯誤消息的完整文本。此文本包括爲任何可替換參數(如長度、對象名稱或時間)提供的值。
ERROR_SEVERITY() 返回錯誤嚴重性。
ERROR_STATE() 返回錯誤狀態號。
ERROR_LINE() 返回導致錯誤的例程中的行號。
ERROR_PROCEDURE() 返回出現錯誤的存儲過程或觸發器的名稱。