ERROR_SEVERITY (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 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 ( )
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 sehen Sie das Ergebnis.
-----------
(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 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_NUMBER (Transact-SQL)
ERROR_PROCEDURE (Transact-SQL)
ERROR_STATE (Transact-SQL)
RAISERROR (Transact-SQL)
@@ERROR (Transact-SQL)
Fehler- und Ereignisreferenz (Datenbank-Engine)