共用方式為


ERROR_SEVERITY (Transact-SQL)

適用於:SQL ServerAzure SQL 資料庫Azure SQL 受控執行個體Azure Synapse Analytics分析平台系統(PDW)Microsoft Fabric 中的 SQL 分析端點Microsoft Fabric 中的倉儲Microsoft Fabric 中的 SQL 資料庫

如果該錯誤造成 CATCH 建構區塊 TRY...CATCH 執行,此函式會傳回錯誤發生的錯誤嚴重性值。

Transact-SQL 語法慣例

語法

ERROR_SEVERITY ( )

傳回類型

int

返回值

在發生錯誤的區塊中 CATCH 呼叫時, ERROR_SEVERITY 傳回導致 CATCH 區塊執行之錯誤的嚴重性值。

ERROR_SEVERITY如果在區塊範圍NULL之外呼叫 ,則會傳CATCH回 。

備註

ERROR_SEVERITY 支援在區塊範圍內 CATCH 的任何位置呼叫。

不論執行多少次,或在 ERROR_SEVERITY 區塊範圍內的哪個位置執行,CATCH 都會傳回錯誤的錯誤嚴重性值。 這與 類似 @@ERROR 的函式形成對比,此函式只會傳回緊接在造成錯誤之函式之後的語句中錯誤號碼。

ERROR_SEVERITY 通常會在巢狀 CATCH 區塊中作業。 ERROR_SEVERITY 會傳回參考該 CATCH 區塊之 CATCH 區塊範圍特定的錯誤嚴重性值。 例如, CATCH 外部 TRY...CATCH 建構的區塊可能會有內部 TRY...CATCH 建構。 在該內部 CATCH 區塊內,ERROR_SEVERITY 會傳回叫用內部 CATCH 區塊之錯誤的嚴重性值。 如果 ERROR_SEVERITY 是在外部 CATCH 區塊中執行,它會傳回叫用該外部 CATCH 區塊之錯誤的錯誤嚴重性值。

範例:Azure Synapse Analytics 和 Analytics Platform System (PDW)

A。 在 CATCH 區塊中使用ERROR_SEVERITY

此範例會顯示產生除以零之錯誤的預存程序。 ERROR_SEVERITY 會傳回該錯誤的嚴重性值。

BEGIN TRY
-- Generate a divide-by-zero error.
    SELECT 1 / 0;
END TRY
BEGIN CATCH
    SELECT ERROR_SEVERITY() AS ErrorSeverity;
END CATCH
GO

結果集如下所示。

-----------

(0 row(s) affected)

ErrorSeverity
-------------
16

(1 row(s) affected)

B. 搭配其他錯誤處理工具,在 CATCH 區塊中使用ERROR_SEVERITY

此範例會顯示產生除以零之錯誤的 SELECT 陳述式。 預存程序會傳回錯誤的相關資訊。

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)