ERROR_MESSAGE (Transact-SQL)ERROR_MESSAGE (Transact-SQL)

Применимо к:Applies to: даSQL ServerSQL Server (все поддерживаемые версии) yesSQL ServerSQL Server (all supported versions) ДаБаза данных SQL AzureAzure SQL DatabaseYesБаза данных SQL AzureAzure SQL Database ДаУправляемый экземпляр SQL AzureAzure SQL Managed InstanceYesУправляемый экземпляр SQL AzureAzure SQL Managed Instance даAzure Synapse AnalyticsAzure Synapse AnalyticsyesAzure Synapse AnalyticsAzure Synapse Analytics даПараллельное хранилище данныхParallel Data WarehouseyesПараллельное хранилище данныхParallel Data WarehouseПрименимо к:Applies to: даSQL ServerSQL Server (все поддерживаемые версии) yesSQL ServerSQL Server (all supported versions) ДаБаза данных SQL AzureAzure SQL DatabaseYesБаза данных SQL AzureAzure SQL Database ДаУправляемый экземпляр SQL AzureAzure SQL Managed InstanceYesУправляемый экземпляр SQL AzureAzure SQL Managed Instance даAzure Synapse AnalyticsAzure Synapse AnalyticsyesAzure Synapse AnalyticsAzure Synapse Analytics даПараллельное хранилище данныхParallel Data WarehouseyesПараллельное хранилище данныхParallel Data Warehouse

Эта функция возвращает текст сообщения об ошибке, которая вызвала выполнение блока CATCH конструкции TRY...CATCH.This function returns the message text of the error that caused the CATCH block of a TRY...CATCH construct to execute.

Значок ссылки на раздел Синтаксические обозначения в Transact-SQLTopic link icon Transact-SQL Syntax Conventions

СинтаксисSyntax

ERROR_MESSAGE ( )   

Примечание

Ссылки на описание синтаксиса Transact-SQL для SQL Server 2014 и более ранних версий, см. в статье Документация по предыдущим версиям.To view Transact-SQL syntax for SQL Server 2014 and earlier, see Previous versions documentation.

Типы возвращаемых данныхReturn Types

nvarchar(4000)nvarchar(4000)

Возвращаемое значениеReturn Value

При вызове в блоке CATCH функция ERROR_MESSAGE возвращает полный текст сообщения об ошибке, запустившей блок CATCH.When called in a CATCH block, ERROR_MESSAGE returns the complete text of the error message that caused the CATCH block to run. Текст содержит значения подставляемых параметров, таких как длина, имена объектов или время.The text includes the values supplied for any substitutable parameters - for example, lengths, object names, or times.

Функция ERROR_MESSAGE возвращает значение NULL в случае вызова вне блока CATCH.ERROR_MESSAGE returns NULL when called outside the scope of a CATCH block.

RemarksRemarks

Функцию ERROR_MESSAGE можно вызывать в любом месте области действия блока CATCH.ERROR_MESSAGE supports calls anywhere within the scope of a CATCH block.

Функция ERROR_MESSAGE возвращает соответствующее сообщение об ошибке независимо от количества ее выполнений или от места ее вызова в области действия блока CATCH.ERROR_MESSAGE returns a relevant error message regardless of how many times it runs, or where it runs within the scope of the CATCH block. В этом ее отличие от таких функций, как @@ERROR, которые возвращают номер ошибки только в той инструкции, которая непосредственно следует за инструкцией, вызвавшей ошибку.This contrasts with a function like @@ERROR, which only returns an error number in the statement immediately following the one that causes an error.

Во вложенных блоках CATCH функция ERROR_MESSAGE возвращает сообщение об ошибке, соответствующее области действия блока CATCH, который ссылался на данный блок CATCH.In nested CATCH blocks, ERROR_MESSAGE returns the error message specific to the scope of the CATCH block that referenced that CATCH block. Например, блок CATCH внешней конструкции TRY...CATCH может содержать внутреннюю конструкцию TRY...CATCH.For example, the CATCH block of an outer TRY...CATCH construct could have an inner TRY...CATCH construct. Во внутреннем блоке CATCH функция ERROR_MESSAGE возвращает сообщение об ошибке, вызвавшей внутренний блок CATCH.Inside that inner CATCH block, ERROR_MESSAGE returns the message from the error that invoked the inner CATCH block. Если функция ERROR_MESSAGE выполняется во внешнем блоке CATCH, она возвращает сообщение об ошибке, вызвавшей внешний блок CATCH.If ERROR_MESSAGE runs in the outer CATCH block, it returns the message from the error that invoked that outer CATCH block.

ПримерыExamples

A.A. Использование функции ERROR_MESSAGE в блоке CATCHUsing ERROR_MESSAGE in a CATCH block

В приведенном ниже примере показана инструкция SELECT, вызывающая ошибку деления на ноль.This example shows a SELECT statement that generates a divide-by-zero error. Блок CATCH возвращает сообщение об ошибке.The CATCH block returns the error message.

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

Результирующий набор:Here is the result set.

-----------

(0 row(s) affected)

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

(1 row(s) affected)

Б.B. Использование функции ERROR_MESSAGE в блоке CATCH с другими средствами обработки ошибокUsing ERROR_MESSAGE in a CATCH block with other error-handling tools

В приведенном ниже примере показана инструкция SELECT, вызывающая ошибку деления на ноль.This example shows a SELECT statement that generates a divide-by-zero error. Вместе с сообщением об ошибке блок CATCH возвращает сведения о ней.Along with the error message, the CATCH block returns information about that error.

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  

Результирующий набор:Here is the result set.

-----------

(0 row(s) affected)

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

(1 row(s) affected)

См. также:See Also

sys.messages (Transact-SQL) sys.messages (Transact-SQL)
TRY...CATCH (Transact-SQL) TRY...CATCH (Transact-SQL)
ERROR_LINE (Transact-SQL) ERROR_LINE (Transact-SQL)
ERROR_MESSAGE (Transact-SQL) ERROR_MESSAGE (Transact-SQL)
ERROR_PROCEDURE (Transact-SQL) ERROR_PROCEDURE (Transact-SQL)
ERROR_SEVERITY (Transact-SQL) ERROR_SEVERITY (Transact-SQL)
ERROR_STATE (Transact-SQL) ERROR_STATE (Transact-SQL)
RAISERROR (Transact-SQL) RAISERROR (Transact-SQL)
@@ERROR (Transact-SQL) @@ERROR (Transact-SQL)
Справочник по ошибкам и событиям (компонент Database Engine)Errors and Events Reference (Database Engine)