適用於:SQL Server
Azure SQL 資料庫
Azure SQL 受控執行個體
Azure Synapse Analytics
分析平台系統(PDW)
Microsoft Fabric 中的 SQL 分析端點
Microsoft Fabric 中的倉儲
Microsoft Fabric 中的 SQL 資料庫
此函式會傳回造成執行 TRY...CATCH 建構的 CATCH 區塊之錯誤的訊息文字。
語法
ERROR_MESSAGE ( )
傳回型別
nvarchar(4000)
傳回值
在 CATCH 區塊中呼叫時,ERROR_MESSAGE 會傳回造成執行 CATCH 區塊之錯誤訊息的完整文字。 文字包括提供給任何可替代參數的值;例如,長度、物件名稱或次數。
在 CATCH 區塊範圍之外呼叫時,ERROR_MESSAGE 會傳回 NULL。
備註
ERROR_MESSAGE 支援在 CATCH 區塊範圍內的任何位置呼叫。
不論執行多少次,或在 ERROR_MESSAGE 區塊範圍內的哪個位置執行,CATCH 都會傳回相關的錯誤訊息。 這有別於 @@ERROR 之類的函式,其只會在緊接於發生錯誤的陳述式之後的陳述式中,傳回錯誤號碼。
在巢狀 CATCH 區塊中,ERROR_MESSAGE 會參考該 CATCH 區塊之 CATCH 區塊範圍特定的錯誤訊息。 例如,外部 TRY...CATCH 建構的 CATCH 區塊可能會有內部 TRY...CATCH 建構。 在該內部 CATCH 區塊內,ERROR_MESSAGE 會傳回叫用內部 CATCH 區塊之錯誤的訊息。 如果 ERROR_MESSAGE 是在外部 CATCH 區塊中執行,它會傳回叫用該外部 CATCH 區塊之錯誤的訊息。
範例
A。 在 CATCH 區塊中使用 ERROR_MESSAGE
此範例會顯示產生除以零之錯誤的 SELECT 陳述式。
CATCH 區塊會傳回錯誤訊息。
BEGIN TRY
-- Generate a divide-by-zero error.
SELECT 1/0;
END TRY
BEGIN CATCH
SELECT ERROR_MESSAGE() AS ErrorMessage;
END CATCH;
GO
結果集如下所示。
-----------
(0 row(s) affected)
ErrorMessage
----------------------------------
Divide by zero error encountered.
(1 row(s) affected)
B. 在含有其他錯誤處理工具的 CATCH 區塊中使用 ERROR_MESSAGE
此範例會顯示產生除以零之錯誤的 SELECT 陳述式。 除了錯誤訊息,CATCH 區塊也會傳回該錯誤的相關資訊。
BEGIN TRY
-- Generate a divide-by-zero error.
SELECT 1/0;
END TRY
BEGIN CATCH
SELECT
ERROR_NUMBER() AS ErrorNumber
,ERROR_SEVERITY() AS ErrorSeverity
,ERROR_STATE() AS ErrorState
,ERROR_PROCEDURE() AS ErrorProcedure
,ERROR_LINE() AS ErrorLine
,ERROR_MESSAGE() AS ErrorMessage;
END CATCH;
GO
結果集如下所示。
-----------
(0 row(s) affected)
ErrorNumber ErrorSeverity ErrorState ErrorProcedure ErrorLine ErrorMessage
----------- ------------- ----------- --------------- ---------- ----------------------------------
8134 16 1 NULL 4 Divide by zero error encountered.
(1 row(s) affected)
另請參閱
sys.messages (Transact-SQL)
嘗試。。。CATCH (Transact-SQL)
ERROR_LINE (Transact-SQL)
ERROR_MESSAGE (Transact-SQL)
ERROR_PROCEDURE (Transact-SQL)
ERROR_SEVERITY (Transact-SQL)
ERROR_STATE (Transact-SQL)
RAISERROR (Transact-SQL)
@@ERROR (Transact-SQL)
錯誤和事件參考 (Database Engine)