ERROR_SEVERITY (Transact-SQL)

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL Analytics-Endpunkt in Microsoft FabricWarehouse in Microsoft Fabric

Diese Funktion gibt den Wert des Schweregrads für den Fehler zurück, an dem der Fehler auftritt, wenn durch diesen die Ausführung des CATCH-Blocks eines TRY...CATCH-Konstrukts verursacht wurde.

Transact-SQL-Syntaxkonventionen

Syntax

ERROR_SEVERITY ( )  

Hinweis

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

Rückgabetypen

int

Rückgabewert

Wenn diese Funktion in einem CATCH-Block aufgerufen wird, in dem ein Fehler auftritt, gibt ERROR_SEVERITY den Wert des Schweregrads für den Fehler zurück, der die Ausführung des CATCH-Blocks ausgelöst hat.

ERROR_SEVERITY gibt NULL zurück, wenn die Funktion außerhalb des Bereichs eines CATCH-Blocks aufgerufen wird.

Bemerkungen

ERROR_SEVERITY kann überall im Bereich eines CATCH-Blocks aufgerufen werden.

ERROR_SEVERITY gibt unabhängig von der Anzahl der Aufrufe und dem Bereich des CATCH-Blocks den Wert des Fehlerschweregrads 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_SEVERITY arbeitet in der Regel in einem geschachtelten CATCH-Block. ERROR_SEVERITY gibt den Wert des Fehlerschweregrads 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_SEVERITY die Wert des Schweregrads für den Fehler zurück, der den inneren CATCH-Block aufgerufen hat. Wenn ERROR_SEVERITY im äußeren CATCH-Block ausgeführt wird, wird der Wert des Schweregrads für den Fehler zurückgegeben, der den äußeren CATCH-Block aufgerufen hat.

Beispiele: Azure Synapse Analytics und Analytics-Plattformsystem (PDW)

A. Verwenden von ERROR_SEVERITY in einem CATCH-Block

Dieses Beispiel zeigt eine gespeicherte Prozedur, in der ein Fehler aufgrund einer Division durch 0 (null) generiert wird. ERROR_SEVERITY gibt den Wert für den Schweregrad des Fehlers zurück.

BEGIN TRY  
    -- Generate a divide-by-zero error.  
    SELECT 1/0;  
END TRY  
BEGIN CATCH  
    SELECT ERROR_SEVERITY() AS ErrorSeverity;  
END CATCH;  
GO  

Hier ist das Resultset.

-----------

(0 row(s) affected)

ErrorSeverity
-------------
16

(1 row(s) affected)

B. Verwenden von ERROR_SEVERITY in einem CATCH-Block mit anderen Tools zur Fehlerbehandlung

Das folgende Beispiel zeigt eine SELECT-Anweisung, die einen Fehler aufgrund einer Division durch 0 (null) generiert. Die gespeicherte Prozedur gibt Informationen über den 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_NUMBER (Transact-SQL)
ERROR_PROCEDURE (Transact-SQL)
ERROR_STATE (Transact-SQL)
RAISERROR (Transact-SQL)
@@ERROR (Transact-SQL)
Fehler- und Ereignisreferenz (Datenbank-Engine)