Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Punkt końcowy analizy SQL w usłudze Microsoft Fabric
Hurtownia danych w usłudze Microsoft Fabric
Baza 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)