ERROR_NUMBER (Transact-SQL)
Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW) SQL Analytics-Endpunkt in Microsoft Fabric Warehouse 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.
ERROR_NUMBER
gibt in einem geschachtelten CATCH
-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)
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)
Fehler- und Ereignisreferenz (Datenbank-Engine)