Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:SQL Server
Azure SQL-Datenbank
Verwaltete Azure SQL-Instanz
Azure Synapse Analytics
Analytics Platform System (PDW)
SQL-Analyseendpunkt in Microsoft Fabric
Lagerhaus in Microsoft Fabric
SQL-Datenbank 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.
CATCH gibt in geschachtelten ERROR_MESSAGE-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
Ein. 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)
FEHLER_PROZEDUR (Transact-SQL)
ERROR_SEVERITY (Transact-SQL)
ERROR_STATE (Transact-SQL)
RAISERROR (Transact-SQL)
@@ERROR (Transact-SQL)
Fehler- und Ereignisreferenz (Datenbank-Engine)