ERROR_NUMBER (Transact-SQL)

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

Themenlink (Symbol)Transact-SQL-Syntaxkonventionen

Syntax

ERROR_NUMBER ( )

Rückgabetypen

int

Rückgabewert

Bei Aufruf in einem CATCH-Block wird die Fehlernummer der Fehlermeldung zurückgegeben, die die Ausführung des CATCH-Blockes verursacht hat.

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

Hinweise

Diese Funktion kann an jeder beliebigen Position im Gültigkeitsbereich eines CATCH-Blockes aufgerufen werden.

ERROR_NUMBER gibt die Fehlermeldung unabhängig davon zurück, wie oft die Funktion ausgeführt wird oder wo innerhalb des Gültigkeitsbereiches des CATCH-Blockes sie ausgeführt wird. Anders ist dies bei der @@ERROR-Funktion, die die Fehlernummer in der Anweisung sofort nach der Anweisung zurückgibt, die einen Fehler verursacht hat, oder in der ersten Anweisung eines CATCH-Blockes.

In geschachtelten CATCH-Blöcken gibt ERROR_NUMBER die Fehlernummer zurück, die für den Gültigkeitsbereich des CATCH-Blockes, in dem auf die Funktion verwiesen wird, spezifisch ist. Der CATCH-Block eines äußeren TRY...CATCH-Konstrukts könnte z. B. über ein geschachteltes TRY...CATCH-Konstrukt verfügen. Innerhalb des geschachtelten CATCH-Blockes gibt ERROR_NUMBER die Nummer des Fehlers zurück, der den geschachtelten CATCH-Block aufgerufen hat. Falls ERROR_NUMBER im äußeren CATCH-Block ausgeführt wird, wird die Nummer des Fehlers zurückgegeben, der den CATCH-Block aufgerufen hat.

Beispiele

A. Verwenden von ERROR_NUMBER in einem CATCH-Block

Das folgende Codebeispiel zeigt eine SELECT-Anweisung, die einen Fehler aufgrund einer Division durch 0 generiert. Die Nummer des Fehlers wird 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;
END CATCH;
GO

B. Verwenden von ERROR_NUMBER 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 Fehlernummer werden Informationen zum Fehler 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