適用於:SQL Server
Azure SQL 資料庫
Azure SQL 受控執行個體
Azure Synapse Analytics
分析平台系統(PDW)
Microsoft Fabric 中的 SQL 分析端點
Microsoft Fabric 中的倉儲
Microsoft Fabric 中的 SQL 資料庫
此函式會傳回造成執行 TRY...CATCH 建構的 CATCH 區塊之錯誤的錯誤號碼。
語法
ERROR_NUMBER ( )
傳回型別
int
傳回值
在 CATCH 區塊中呼叫時,ERROR_NUMBER 會傳回造成執行 CATCH 區塊之錯誤的錯誤號碼。
在 CATCH 區塊範圍之外呼叫時,ERROR_NUMBER 會傳回 NULL。
備註
ERROR_NUMBER 支援在 CATCH 區塊範圍內的任何位置呼叫。
不論執行多少次,或在 ERROR_NUMBER 區塊範圍內的哪個位置執行,CATCH 都會傳回相關的錯誤號碼。 這有別於 @@ERROR 之類的函式,其只會在緊接於發生錯誤的陳述式之後的陳述式中,傳回錯誤號碼。
在巢狀 CATCH 區塊中,ERROR_NUMBER 會參考該 CATCH 區塊之 CATCH 區塊範圍特定的錯誤號碼。 例如,外部 TRY...CATCH 建構的 CATCH 區塊可能會有內部 TRY...CATCH 建構。 在該內部 CATCH 區塊內,ERROR_NUMBER 會傳回叫用內部 CATCH 區塊之錯誤的號碼。 如果 ERROR_NUMBER 是在外部 CATCH 區塊中執行,它會傳回叫用該外部 CATCH 區塊之錯誤的號碼。
範例
A. 在 CATCH 區塊中使用 ERROR_NUMBER
此範例會顯示產生除以零之錯誤的 SELECT 陳述式。
CATCH 區塊會傳回錯誤號碼。
BEGIN TRY
-- Generate a divide-by-zero error.
SELECT 1/0;
END TRY
BEGIN CATCH
SELECT ERROR_NUMBER() AS ErrorNumber;
END CATCH;
GO
結果集如下所示。
-----------
(0 row(s) affected)
ErrorNumber
-----------
8134
(1 row(s) affected)
B. 在含有其他錯誤處理工具的 CATCH 區塊中使用 ERROR_NUMBER
此範例會顯示產生除以零之錯誤的 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)
嘗試…捕捉(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)