ERROR_NUMBER (Transact-SQL)

Gilt für: SQL Server (alle unterstützten Versionen) Azure SQL-Datenbank Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)

Diese Funktion gibt die Fehlernummer des Fehlers zurück, der die Ausführung des CATCH-Blocks eines TRY...CATCH-Konstrukts ausgelöst hat.

ThemenlinksymbolTransact-SQL-Syntaxkonventionen

Syntax

ERROR_NUMBER ( )  

Hinweis

Informationen zum Anzeigen der Transact-SQL-Syntax für SQL Server 2014 oder früher finden Sie unter Dokumentation zu früheren Versionen.

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 ist das Resultset.

-----------

(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 ist das Resultset.

-----------

(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)