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)