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.
Gilt für:SQL Server
Azure SQL-Datenbank
Verwaltete Azure SQL-Instanz
Azure Synapse Analytics
Analytics Platform System (PDW)
SQL-Analyseendpunkt in Microsoft Fabric
Lagerhaus in Microsoft Fabric
SQL-Datenbank in Microsoft Fabric
Diese Funktion gibt die Fehlernummer des Fehlers zurück, der die Ausführung des CATCH-Blocks eines TRY...CATCH-Konstrukts ausgelöst hat.
Transact-SQL-Syntaxkonventionen
Syntax
ERROR_NUMBER ( )
Rückgabetypen
int
Rückgabewert
Wenn ERROR_NUMBER in einem CATCH-Block aufgerufen wird, wird die Fehlernummer des Fehlers zurückgegeben, der die Ausführung des CATCH-Blocks ausgelöst hat.
ERROR_NUMBER gibt NULL zurück, wenn die Funktion außerhalb des Bereichs eines CATCH-Blocks aufgerufen wird.
Bemerkungen
ERROR_NUMBER kann überall im Bereich eines CATCH-Blocks aufgerufen werden.
ERROR_NUMBER gibt unabhängig von der Anzahl der Aufrufe und dem Bereich des CATCH-Blocks eine relevante Fehlernummer zurück. Dies steht im Gegensatz zu Funktionen wie @@ERROR, die nur eine Fehlernummer in der Anweisung zurückgeben, die unmittelbar auf die Anweisung folgt, die einen Fehler auslöst.
CATCH gibt in einem geschachtelten ERROR_NUMBER-Block die Fehlernummer für den entsprechenden Bereich des CATCH-Blocks zurück, der auf den CATCH-Block verwiesen hat. Zum Beispiel könnte der CATCH-Block eines äußeren TRY...CATCH-Konstrukts ein inneres TRY...CATCH-Konstrukt aufweisen. In diesem inneren CATCH-Block gibt ERROR_NUMBER die Nummer des Fehlers zurück, der den inneren CATCH-Block aufgerufen hat. Wenn ERROR_NUMBER im äußeren CATCH-Block ausgeführt wird, wird die Nummer des Fehlers zurückgegeben, der den äußeren CATCH-Block aufgerufen hat.
Beispiele
A. Verwenden von ERROR_NUMBER in einem CATCH-Block
Das folgende Beispiel zeigt eine SELECT-Anweisung, die einen Fehler aufgrund einer Division durch 0 (null) generiert. Der CATCH-Block gibt die Fehlernummer zurück.
BEGIN TRY
-- Generate a divide-by-zero error.
SELECT 1/0;
END TRY
BEGIN CATCH
SELECT ERROR_NUMBER() AS ErrorNumber;
END CATCH;
GO
Hier sehen Sie das Ergebnis.
-----------
(0 row(s) affected)
ErrorNumber
-----------
8134
(1 row(s) affected)
B. Verwenden von ERROR_NUMBER in einem CATCH-Block mit anderen Fehlerbehandlungstools
Das folgende Beispiel zeigt eine SELECT-Anweisung, die einen Fehler aufgrund einer Division durch 0 (null) generiert. Der CATCH-Block gibt zusammen mir der Fehlernummer Informationen zum Fehler zurück.
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
Hier sehen Sie das Ergebnis.
-----------
(0 row(s) affected)
ErrorNumber ErrorSeverity ErrorState ErrorProcedure ErrorLine ErrorMessage
----------- ------------- ----------- --------------- ---------- ----------------------------------
8134 16 1 NULL 4 Divide by zero error encountered.
(1 row(s) affected)
Weitere Informationen
sys.messages (Transact-SQL)
VERSUCHEN... 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)
Fehler- und Ereignisreferenz (Datenbank-Engine)