Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
gäller för:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
SQL-analysslutpunkt i Microsoft Fabric
Warehouse 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)