Dela via


ERROR_SEVERITY (Transact-SQL)

gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL-analysslutpunkt i Microsoft FabricWarehouse i Microsoft Fabric

Den här funktionen returnerar allvarlighetsgradsvärdet för felet där ett fel inträffar, om felet orsakade att byggblocket CATCHTRY...CATCH körs.

Transact-SQL syntaxkonventioner

Syntax

ERROR_SEVERITY ( )

Returtyper

Int

Returvärde

När det anropas i ett CATCH block där ett fel inträffar returneras ERROR_SEVERITY allvarlighetsgraden för det fel som gjorde CATCH att blocket kördes.

ERROR_SEVERITY returnerar NULL om det anropas utanför omfånget för ett CATCH block.

Anmärkningar

ERROR_SEVERITY stöder anrop var som helst inom omfånget för ett CATCH block.

ERROR_SEVERITY returnerar felets allvarlighetsgradsvärde för ett fel, oavsett hur många gånger det körs eller var det körs inom blockets CATCH omfång. Detta står i kontrast till en funktion som @@ERROR, som endast returnerar ett felnummer i -instruktionen omedelbart efter den som orsakar ett fel.

ERROR_SEVERITY fungerar vanligtvis i ett kapslat CATCH block. ERROR_SEVERITY returnerar felets allvarlighetsgradsvärde som är specifikt för omfånget för CATCH blocket som refererade till blocket CATCH . Till exempel kan blocket för CATCH en yttre TRY...CATCH konstruktion ha en inre TRY...CATCH konstruktion. I det inre CATCH blocket ERROR_SEVERITY returnerar du allvarlighetsgradsvärdet för felet som anropade det inre CATCH blocket. Om ERROR_SEVERITY körs i det yttre CATCH blocket returneras felets allvarlighetsgrad för felet som anropade det yttre CATCH blocket.

Exempel: Azure Synapse Analytics and Analytics Platform System (PDW)

A. Använda ERROR_SEVERITY i ett CATCH-block

Det här exemplet visar en lagrad procedur som genererar ett divide-by-zero-fel. ERROR_SEVERITY returnerar allvarlighetsgradsvärdet för felet.

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

Här är resultatet.

-----------

(0 row(s) affected)

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

(1 row(s) affected)

B. Använda ERROR_SEVERITY i ett CATCH-block med andra verktyg för felhantering

Det här exemplet visar en SELECT instruktion som genererar en uppdelning med noll fel. Den lagrade proceduren returnerar information om felet.

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

Här är resultatet.

-----------

(0 row(s) affected)

ErrorNumber ErrorSeverity ErrorState  ErrorProcedure  ErrorLine   ErrorMessage
----------- ------------- ----------- --------------- ----------- ----------------------------------
8134        16            1           NULL            4           Divide by zero error encountered.

(1 row(s) affected)