Sdílet prostřednictvím


ERROR_NUMBER (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 vrací chybové číslo chyby, která způsobila blok CATCH v TRY... CATCH konstrukce pro provedení.

Transact-SQL konvence syntaxe

Syntaxe

ERROR_NUMBER ( )  

Návratové typy

int

Návratová hodnota

Při volání bloku CATCH vrátí chybové číslo chyby, ERROR_NUMBER která způsobila spuštění bloku CATCH.

ERROR_NUMBER vrací NULL, když je volán mimo rozsah bloku CATCH.

Poznámky

ERROR_NUMBER podporuje volání kdekoli v rámci CATCH bloku.

ERROR_NUMBER vrací relevantní chybové číslo bez ohledu na to, kolikrát se spustí, nebo kde se spustí v rozsahu CATCH bloku. To je v kontrastu s funkcí jako @@ERROR, která vrací chybové číslo pouze v příkazu hned po tom, které chybu způsobuje.

V vnořeném CATCH bloku vrací ERROR_NUMBER chybové číslo specifické pro rozsah bloku CATCH , který na tento CATCH blok odkazoval. Například CATCH blok vnějšího TRY... Konstrukt CATCH by mohl mít vnitřní konstrukt.TRY...CATCH Uvnitř tohoto vnitřního CATCH bloku vrací ERROR_NUMBER číslo chyby, která vyvolala vnitřní CATCH blok. Pokud ERROR_NUMBER běží ve vnějším CATCH bloku, vrátí číslo chyby, která tento vnější CATCH blok vyvolala.

Examples

A. Použití ERROR_NUMBER v bloku CATCH

Tento příklad ukazuje tvrzení, SELECT které generuje chybu dělení nulou. Blok CATCH vrací chybové číslo.

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

Tady je soubor výsledků.

-----------

(0 row(s) affected)

ErrorNumber
-----------
8134

(1 row(s) affected)

B. Použití ERROR_NUMBER v bloku CATCH s dalšími nástroji pro zpracování chyb

Tento příklad ukazuje tvrzení, SELECT které generuje chybu dělení nulou. Spolu s číslem CATCH chyby blok vrací informace o této 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)

Viz také

sys.messages (Transact-SQL)
VYZKOUŠET... ZACHYTIT (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)
Referenční dokumentace k chybám a událostem (databázový stroj)