Udostępnij za pomocą


ERROR_MESSAGE (Transact-SQL)

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Punkt końcowy analizy SQL w usłudze Microsoft FabricHurtownia danych w usłudze Microsoft FabricBaza danych SQL w usłudze Microsoft Fabric

Ta funkcja zwraca tekst komunikatu o błędzie, który spowodował blok CATCH try... Konstrukcja CATCH do wykonania.

Transact-SQL konwencje składni

Składnia

ERROR_MESSAGE ( )   

Typy zwracane

nvarchar(4000)

Wartość zwracana

Po wywołaniu w bloku CATCH zwraca pełny tekst komunikatu o błędzie, ERROR_MESSAGE który spowodował CATCH uruchomienie bloku. Tekst zawiera wartości podane dla wszystkich parametrów podstawialnych — na przykład długości, nazwy obiektów lub godziny.

ERROR_MESSAGE Zwraca wartość NULL, gdy jest wywoływana poza zakresem bloku CATCH.

Uwagi

ERROR_MESSAGE obsługuje wywołania w dowolnym miejscu w zakresie bloku CATCH.

ERROR_MESSAGE Zwraca odpowiedni komunikat o błędzie niezależnie od tego, ile razy jest uruchamiany, lub gdzie jest uruchamiany w zakresie CATCH bloku. To kontrastuje z funkcją taką jak @@ERROR, która zwraca tylko numer błędu w instrukcji bezpośrednio po tej, która powoduje błąd.

W blokach zagnieżdżonych CATCH zwraca komunikat o błędzie specyficzny dla zakresu ERROR_MESSAGE bloku, do którego odwołuje się ten CATCH blok. CATCH Na przykład CATCH blok zewnętrznej try... Konstrukcja CATCH może mieć konstrukcję wewnętrzną TRY...CATCH . Wewnątrz tego bloku wewnętrznego CATCH zwraca komunikat z błędu, który wywołał blok wewnętrznyERROR_MESSAGE. CATCH Jeśli ERROR_MESSAGE działa w bloku zewnętrznym CATCH , zwraca komunikat z błędu, który wywołał ten blok zewnętrzny CATCH .

Przykłady

Odp. Używanie ERROR_MESSAGE w bloku CATCH

W tym przykładzie pokazano instrukcję SELECT , która generuje błąd dzielenia przez zero. Blok CATCH zwraca komunikat o błędzie.

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

Oto zestaw wyników.

-----------

(0 row(s) affected)

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

(1 row(s) affected)

B. Używanie ERROR_MESSAGE w bloku CATCH z innymi narzędziami do obsługi błędów

W tym przykładzie pokazano instrukcję SELECT , która generuje błąd dzielenia przez zero. Wraz z komunikatem CATCH o błędzie blok zwraca informacje o tym błędzie.

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  

Oto zestaw wyników.

-----------

(0 row(s) affected)

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

(1 row(s) affected)

Zobacz też

sys.messages (Transact-SQL)
TRY... CATCH (Transact-SQL)
ERROR_LINE (Transact-SQL)
ERROR_MESSAGE (Transact-SQL)
BŁĄD_PROCEDURY (Transact-SQL)
ERROR_SEVERITY (Transact-SQL)
ERROR_STATE (Transact-SQL)
RAISERROR (Transact-SQL)
@@ERROR (Transact-SQL)
Informacje o błędach i zdarzeniach (aparat bazy danych)