ERROR_NUMBER (Transact-SQL)

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

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

Im folgenden Codebeispiel wird eine SELECT-Anweisung gezeigt, die einen Fehler aufgrund einer Division durch Null 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

Im folgenden Codebeispiel wird eine SELECT-Anweisung gezeigt, die einen Fehler aufgrund einer Division durch Null 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

Siehe auch

Verweis

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)

Andere Ressourcen

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

Hilfe und Informationen

Informationsquellen für SQL Server 2005