ERROR_NUMBER (Transact-SQL)
Gibt die Fehlernummer des Fehlers zurück, der die Ausführung des CATCH-Blockes eines TRY…CATCH-Konstruktes verursacht hat.
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 AdventureWorks2012;
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 AdventureWorks2012;
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