Sdílet prostřednictvím


ERROR_SEVERITY (Transact-SQL)

Platí pro:SQL ServerAzure SQL DatabaseSpravovaná instance Azure SQLAzure Synapse AnalyticsAnalytics Platform System (PDW)Koncový bod analýzy SQL v Microsoft FabricSklad v Microsoft FabricDatabáze SQL v Microsoft Fabric

Tato funkce vrátí hodnotu závažnosti chyby, kde dojde k chybě, pokud tato chyba způsobila CATCH spuštění bloku konstruktoru TRY...CATCH .

Transact-SQL konvence syntaxe

Syntaxe

ERROR_SEVERITY ( )

Návratové typy

Int

Návratová hodnota

Při zavolání v CATCH bloku, kde dojde k chybě, ERROR_SEVERITY vrátí hodnotu závažnosti chyby, která způsobila CATCH spuštění bloku.

ERROR_SEVERITY vrátí NULL , pokud je volána mimo rozsah CATCH bloku.

Poznámky

ERROR_SEVERITY podporuje volání kdekoli v rozsahu CATCH bloku.

ERROR_SEVERITY vrátí hodnotu závažnosti chyby chyby bez ohledu na to, kolikrát se spustí nebo kde běží v rámci rozsahu CATCH bloku. To kontrastuje s funkcí, jako je @@ERROR, která vrací pouze číslo chyby v příkazu bezprostředně za funkcí, která způsobuje chybu.

ERROR_SEVERITY obvykle funguje v vnořeném CATCH bloku. ERROR_SEVERITY vrátí hodnotu závažnosti chyby specifickou pro rozsah CATCH bloku odkazovaného na CATCH daný blok. Například CATCH blok vnější TRY...CATCH konstrukce může mít vnitřní TRY...CATCH konstruktor. Uvnitř tohoto vnitřního CATCH bloku ERROR_SEVERITY vrátí hodnotu závažnosti chyby, která vyvolala vnitřní CATCH blok. Pokud ERROR_SEVERITY se spustí ve vnějším CATCH bloku, vrátí hodnotu závažnosti chyby, která vyvolala tento vnější CATCH blok.

Příklady: Azure Synapse Analytics a Analytický platformový systém (PDW)

A. Použití ERROR_SEVERITY v bloku CATCH

Tento příklad ukazuje uloženou proceduru, která generuje chybu dělení nulou. ERROR_SEVERITY vrátí hodnotu závažnosti této chyby.

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

Tady je soubor výsledků.

-----------

(0 row(s) affected)

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

(1 row(s) affected)

B. Použití ERROR_SEVERITY v bloku CATCH s jinými nástroji pro zpracování chyb

Tento příklad ukazuje SELECT příkaz, který generuje chybu dělení nulou. Uložená procedura vrátí informace o chybě.

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

Tady je soubor výsledků.

-----------

(0 row(s) affected)

ErrorNumber ErrorSeverity ErrorState  ErrorProcedure  ErrorLine   ErrorMessage
----------- ------------- ----------- --------------- ----------- ----------------------------------
8134        16            1           NULL            4           Divide by zero error encountered.

(1 row(s) affected)