ERROR_MESSAGE (Transact-SQL)
Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure конечной точке аналитики платформы Аналитики Azure Synapse Analytics (PDW) в Microsoft Fabric Хранилище в Microsoft Fabric
Эта функция возвращает текст сообщения об ошибке, которая вызвала выполнение блока CATCH конструкции TRY...CATCH.
Соглашения о синтаксисе Transact-SQL
Синтаксис
ERROR_MESSAGE ( )
Типы возвращаемых данных
nvarchar(4000)
Возвращаемое значение
При вызове в блоке CATCH функция ERROR_MESSAGE
возвращает полный текст сообщения об ошибке, запустившей блок CATCH
. Текст содержит значения подставляемых параметров, таких как длина, имена объектов или время.
Функция ERROR_MESSAGE
возвращает значение NULL в случае вызова вне блока CATCH.
Замечания
Функцию ERROR_MESSAGE
можно вызывать в любом месте области действия блока CATCH.
Функция ERROR_MESSAGE
возвращает соответствующее сообщение об ошибке независимо от количества ее выполнений или от места ее вызова в области действия блока CATCH
. В этом ее отличие от таких функций, как @@ERROR, которые возвращают номер ошибки только в той инструкции, которая непосредственно следует за инструкцией, вызвавшей ошибку.
Во вложенных блоках CATCH
функция ERROR_MESSAGE
возвращает сообщение об ошибке, соответствующее области действия блока CATCH
, который ссылался на данный блок CATCH
. Например, блок CATCH
внешней конструкции TRY...CATCH может содержать внутреннюю конструкцию TRY...CATCH
. Во внутреннем блоке CATCH
функция ERROR_MESSAGE
возвращает сообщение об ошибке, вызвавшей внутренний блок CATCH
. Если функция ERROR_MESSAGE
выполняется во внешнем блоке CATCH
, она возвращает сообщение об ошибке, вызвавшей внешний блок CATCH
.
Примеры
А. Использование функции ERROR_MESSAGE в блоке CATCH
В приведенном ниже примере показана инструкция SELECT
, вызывающая ошибку деления на ноль. Блок CATCH
возвращает сообщение об ошибке.
BEGIN TRY
-- Generate a divide-by-zero error.
SELECT 1/0;
END TRY
BEGIN CATCH
SELECT ERROR_MESSAGE() AS ErrorMessage;
END CATCH;
GO
Вот результирующий набор.
-----------
(0 row(s) affected)
ErrorMessage
----------------------------------
Divide by zero error encountered.
(1 row(s) affected)
B. Использование функции ERROR_MESSAGE в блоке CATCH с другими средствами обработки ошибок
В приведенном ниже примере показана инструкция SELECT
, вызывающая ошибку деления на ноль. Вместе с сообщением об ошибке блок CATCH
возвращает сведения о ней.
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
Вот результирующий набор.
-----------
(0 row(s) affected)
ErrorNumber ErrorSeverity ErrorState ErrorProcedure ErrorLine ErrorMessage
----------- ------------- ----------- --------------- ---------- ----------------------------------
8134 16 1 NULL 4 Divide by zero error encountered.
(1 row(s) affected)
См. также
sys.messages (Transact-SQL)
ПОПЫТКА... CATCH (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)
Справочник по ошибкам и событиям (ядро СУБД)