Dela via


ERROR_MESSAGE (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 meddelandetexten för felet som orsakade CATCH-blocket i ett TRY... CATCH-konstruktion som ska köras.

Transact-SQL syntaxkonventioner

Syntax

ERROR_MESSAGE ( )   

Returtyper

nvarchar(4000)

Returvärde

När det anropas i ett CATCH-block ERROR_MESSAGE returneras den fullständiga texten i felmeddelandet som gjorde CATCH att blocket kördes. Texten innehåller de värden som anges för eventuella substitutabellparametrar , till exempel längder, objektnamn eller tider.

ERROR_MESSAGE returnerar NULL när det anropas utanför omfånget för ett CATCH-block.

Anmärkningar

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

ERROR_MESSAGE returnerar ett relevant felmeddelande 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.

I kapslade CATCH block ERROR_MESSAGE returnerar du felmeddelandet som är specifikt för omfånget för CATCH blocket som refererade till det CATCH blocket. Till exempel blocket för CATCH ett yttre TRY... CATCH-konstruktionen kan ha en inre TRY...CATCH konstruktion. I det inre CATCH blocket ERROR_MESSAGE returnerar meddelandet från felet som anropade det inre CATCH blocket. Om ERROR_MESSAGE körs i det yttre CATCH blocket returneras meddelandet från felet som anropade det yttre CATCH blocket.

Exempel

A. Använda ERROR_MESSAGE i ett CATCH-block

Det här exemplet visar en SELECT instruktion som genererar ett divide-by-zero-fel. Blocket CATCH returnerar felmeddelandet.

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

Här är resultatet.

-----------

(0 row(s) affected)

ErrorMessage
----------------------------------
Divide by zero error encountered.

(1 row(s) affected)

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

Det här exemplet visar en SELECT instruktion som genererar ett divide-by-zero-fel. Tillsammans med felmeddelandet CATCH returnerar blocket 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)

Se även

sys.messages (Transact-SQL)
FÖRSÖKA... 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)