Sdílet prostřednictvím


ERROR_MESSAGE (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í text zprávy o chybě, která způsobila blok CATCH try... Konstruktor CATCH, který se má provést.

Transact-SQL konvence syntaxe

Syntaxe

ERROR_MESSAGE ( )   

Návratové typy

nvarchar(4000)

Návratová hodnota

Při zavolání v bloku ERROR_MESSAGE CATCH vrátí úplný text chybové zprávy, která způsobila CATCH spuštění bloku. Text obsahuje hodnoty zadané pro všechny parametry, například délky, názvy objektů nebo časy.

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

Poznámky

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

ERROR_MESSAGE vrátí relevantní chybovou zprávu bez ohledu na to, kolikrát se spustí nebo kde se spouští 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.

V vnořených CATCH blocích vrátí chybovou zprávu specifickou pro obor ERROR_MESSAGE bloku, CATCH na který odkazoval daný CATCH blok. Například CATCH blok vnějšího try... Konstruktor CATCH může mít vnitřní TRY...CATCH konstruktor. Uvnitř vnitřního CATCH bloku ERROR_MESSAGE vrátí zprávu z chyby, která vyvolala vnitřní CATCH blok. Pokud ERROR_MESSAGE se spustí ve vnějším bloku, vrátí zprávu z chyby, která vyvolala tento vnější CATCHCATCH blok.

Příklady

A. Použití ERROR_MESSAGE v bloku CATCH

Tento příklad ukazuje SELECT příkaz, který generuje chybu dělení nulou. Blok CATCH vrátí chybovou zprávu.

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

Tady je soubor výsledků.

-----------

(0 row(s) affected)

ErrorMessage
----------------------------------
Divide by zero error encountered.

(1 row(s) affected)

B. Použití ERROR_MESSAGE 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. Spolu s chybovou zprávou CATCH vrátí blok 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)