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.
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