ERROR_MESSAGE (Transact-SQL)

Gibt den Meldungstext des Fehlers zurück, der die Ausführung des CATCH-Blockes eines TRY…CATCH-Konstrukts verursacht hat.

Syntax

ERROR_MESSAGE()

Rückgabetypen

nvarchar(2048)

Rückgabewert

Gibt bei Aufruf in einem CATCH-Block den vollständigen Meldungstext des Fehlers zurück, der die Ausführung des CATCH-Blockes verursacht hat. Der Text enthält die für ersetzbare Parameter angegebenen Werte, wie z. B. Längen, Objektnamen oder Zeitangaben.

Gibt NULL zurück, wenn die Funktion außerhalb des Bereichs eines CATCH-Blockes aufgerufen wird.

Hinweise

ERROR_MESSAGE kann an jeder beliebigen Position im Bereich eines CATCH-Blockes aufgerufen werden.

ERROR_MESSAGE gibt die Fehlermeldung unabhängig davon zurück, wie oft oder wo im Bereich des CATCH-Blockes die Funktion aufgerufen wird. Dies unterscheidet sie von Funktionen wie @@ERROR, die nur in der Anweisung unmittelbar nach der fehlerhaften Anweisung oder in der ersten Anweisung eines CATCH-Blockes eine Fehlernummer zurückgibt.

In geschachtelten CATCH-Blöcken gibt ERROR_MESSAGE die Fehlermeldung für den Bereich des CATCH-Blockes zurück, in dem auf die Funktion verwiesen wird. Beispielsweise könnte der CATCH-Block eines äußeren TRY...CATCH-Konstrukts ein geschachteltes TRY...CATCH-Konstrukt enthalten. Innerhalb des geschachtelten CATCH-Blockes gibt ERROR_MESSAGE die Meldung des Fehlers zurück, der den geschachtelten CATCH-Block aufgerufen hat. Wird ERROR_MESSAGE im äußeren CATCH-Block ausgeführt, gibt es die Meldung des Fehlers zurück, der diesen CATCH-Block aufgerufen hat.

Beispiele

A. Verwenden von ERROR_MESSAGE in einem CATCH-Block

Das folgende Codebeispiel zeigt eine SELECT-Anweisung, die einen Fehler aufgrund einer Division durch 0 generiert. Die Fehlermeldung wird zurückgegeben.

USE AdventureWorks;
GO

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

B. Verwenden von ERROR_MESSAGE in einem CATCH-Block mit anderen Fehlerbehandlungstools

Das folgende Codebeispiel zeigt eine SELECT-Anweisung, die einen Fehler aufgrund einer Division durch 0 generiert. Zusammen mit der Fehlermeldung werden Informationen bezüglich des Fehlers zurückgegeben.

USE AdventureWorks;
GO

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

Siehe auch

Verweis

sys.messages (Transact-SQL)
TRY...CATCH (Transact-SQL)
ERROR_LINE (Transact-SQL)
ERROR_NUMBER (Transact-SQL)
ERROR_PROCEDURE (Transact-SQL)
ERROR_SEVERITY (Transact-SQL)
ERROR_STATE (Transact-SQL)
RAISERROR (Transact-SQL)
@@ERROR (Transact-SQL)

Andere Ressourcen

Abrufen von Fehlerinformationen in Transact-SQL
Verwenden von TRY...CATCH in Transact-SQL
Verwenden von RAISERROR
Schweregrade von Datenbankmodulfehlern

Hilfe und Informationen

Informationsquellen für SQL Server 2005