ERROR_MESSAGE (Transact-SQL)
Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW) SQL Analytics-Endpunkt in Microsoft Fabric Warehouse in Microsoft Fabric
Diese Funktion gibt den Meldungstext des Fehlers zurück, der die Ausführung des CATCH-Blocks eines TRY...CATCH-Konstrukts ausgelöst hat.
Transact-SQL-Syntaxkonventionen
Syntax
ERROR_MESSAGE ( )
Rückgabetypen
nvarchar(4000)
Rückgabewert
Wenn ERROR_MESSAGE
in einem CATCH-Block aufgerufen wird, wird der vollständige Text der Fehlermeldung zurückgegeben, die die Ausführung des CATCH
-Blocks ausgelöst hat. Der Text umfasst die Werte, die für alle ersetzbaren Parameter angegeben werden, z.B. Längen, Objektnamen oder Zeitangaben.
ERROR_MESSAGE
gibt NULL zurück, wenn die Funktion außerhalb des Bereichs eines CATCH-Blocks aufgerufen wird.
Bemerkungen
ERROR_MESSAGE
kann überall im Bereich eines CATCH-Blocks aufgerufen werden.
ERROR_MESSAGE
gibt unabhängig von der Anzahl der Aufrufe und dem Bereich des CATCH
-Blocks eine relevante Fehlermeldung zurück. Dies steht im Gegensatz zu Funktionen wie @@ERROR – diese gibt nur eine Fehlernummer in der Anweisung zurück, die unmittelbar auf die Anweisung folgt, die einen Fehler auslöst.
ERROR_MESSAGE
gibt in geschachtelten CATCH
-Blöcken die Fehlermeldung für den entsprechenden Bereich des CATCH
-Blocks zurück, der auf den CATCH
-Block verwiesen hat. Zum Beispiel könnte der CATCH
-Block eines äußeren TRY...CATCH-Konstrukts ein inneres TRY...CATCH
-Konstrukt aufweisen. In diesem inneren CATCH
-Block gibt ERROR_MESSAGE
die Meldung des Fehlers zurück, der den inneren CATCH
-Block aufgerufen hat. Wenn ERROR_MESSAGE
im äußeren CATCH
-Block ausgeführt wird, wird die Meldung des Fehlers zurückgegeben, der den äußeren CATCH
-Block aufgerufen hat.
Beispiele
A. Verwenden von ERROR_MESSAGE in einem CATCH-Block
Das folgende Beispiel zeigt eine SELECT
-Anweisung, die einen Fehler aufgrund einer Division durch 0 (null) generiert. Der CATCH
-Block gibt die Fehlermeldung zurück.
BEGIN TRY
-- Generate a divide-by-zero error.
SELECT 1/0;
END TRY
BEGIN CATCH
SELECT ERROR_MESSAGE() AS ErrorMessage;
END CATCH;
GO
Hier sehen Sie das Ergebnis.
-----------
(0 row(s) affected)
ErrorMessage
----------------------------------
Divide by zero error encountered.
(1 row(s) affected)
B. Verwenden von ERROR_MESSAGE in einem CATCH-Block mit anderen Fehlerbehandlungstools
Das folgende Beispiel zeigt eine SELECT
-Anweisung, die einen Fehler aufgrund einer Division durch 0 (null) generiert. Der CATCH
-Block gibt zusammen mir der Fehlermeldung Informationen zum Fehler zurück.
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
Hier sehen Sie das Ergebnis.
-----------
(0 row(s) affected)
ErrorNumber ErrorSeverity ErrorState ErrorProcedure ErrorLine ErrorMessage
----------- ------------- ----------- --------------- ---------- ----------------------------------
8134 16 1 NULL 4 Divide by zero error encountered.
(1 row(s) affected)
Weitere Informationen
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)
Fehler- und Ereignisreferenz (Datenbank-Engine)