ERROR_NUMBER (Transact-SQL)

Gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalysplattformssystem (PDW)SQL-analysslutpunkt i Microsoft FabricLager i Microsoft FabricSQL-databas i Microsoft Fabric

Denna funktion returnerar felnumret för felet som orsakade CATCH-blocket i en TRY... CATCH-konstruktionen ska exekveras.

Transact-SQL syntaxkonventioner

Syntax

ERROR_NUMBER ( )  

Returtyper

int

Returvärde

När den anropas i ett CATCH-block returneras ERROR_NUMBER felnumret för det fel som orsakade att CATCH-blocket kördes.

ERROR_NUMBER returnerar NULL när den anropas utanför räckvidden för ett CATCH-block.

Anmärkningar

ERROR_NUMBER stöder anrop var som helst inom ramen för ett CATCH-block.

ERROR_NUMBER returnerar ett relevant felnummer oavsett hur många gånger den körs eller var den körs inom blockets CATCH omfattning. Detta står i kontrast till en funktion som @@ERROR, som endast returnerar ett felnummer i påståendet direkt efter det som orsakar felet.

I ett nästlatat CATCH block returnerar ERROR_NUMBER felnumret som är specifikt för omfattningen av blocket CATCH som refererade till det blocket CATCH . Till exempel, blocket CATCH av en yttre TRY... CATCH-konstruktionen kan ha en inre TRY...CATCH konstruktion. Inuti det inre CATCH blocket returnerar ERROR_NUMBER numret på felet som anropade det inre CATCH blocket. Om ERROR_NUMBER den körs i det yttre CATCH blocket returnerar den numret på felet som anropade det yttre CATCH blocket.

Examples

A. Att använda ERROR_NUMBER i ett CATCH-block

Detta exempel visar ett SELECT påstående som genererar ett del-med-noll-fel. Blocket CATCH returnerar felnumret.

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

Här är resultatet.

-----------

(0 row(s) affected)

ErrorNumber
-----------
8134

(1 row(s) affected)

B. Att använda ERROR_NUMBER i ett CATCH-block med andra felhanteringsverktyg

Detta exempel visar ett SELECT påstående som genererar ett del-med-noll-fel. Tillsammans med felnumret returnerar blocket CATCH information om det 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)

Se även

sys.messages (Transact-SQL)
TRY... 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)
Referens för fel och händelser (databasmotor)