Поделиться через


FORMATMESSAGE (Transact-SQL)

Форматирует сообщение на основе текста, имеющегося в sys.messages. Функция FORMATMESSAGE работает аналогично инструкции RAISERROR, но в отличие от нее не выводит сообщение немедленно, а возвращает сформированный текст для дальнейшей обработки.

Значок ссылки на разделСоглашения о синтаксическом обозначении в Transact-SQL

Синтаксис

FORMATMESSAGE ( msg_number , [ param_value [ ,...n ] ] )

Аргументы

  • msg_number
    Идентификатор сообщения, хранящегося в sys.messages. Если msg_number <= 13000 или сообщение отсутствует в sys.messages, возвращается значение NULL.

  • param_value
    Значение параметра для включения в текст сообщения. Может быть указано несколько значений, при этом они должны быть перечислены в том же порядке, в котором заполнители присутствуют в сообщении. Допускается не более 20 значений.

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

nvarchar

Замечания

Как и инструкция RAISERROR, функция FORMATMESSAGE производит формирование сообщения, подставляя указанные значения параметров вместо заполнителей. Дополнительные сведения о заполнителях, которые допускаются в сообщении об ошибке, а также о процессе его формирования см. в разделе RAISERROR (Transact-SQL).

ПримечаниеПримечание

Функция FORMATMESSAGE работает только с сообщениями, созданными с помощью хранимой процедуры sp_addmessage.

Она находит сообщение для текущего языка, установленного для пользователя. Если локализованная версия сообщения отсутствует, то берется версия сообщения для языка «Английский (США)».

Для локализованных сообщений указанные параметры должны соответствовать заполнителям в версиях для языка «Английский (США)», то есть параметр 1 в локализованной версии должен соответствовать параметру 1 в версии для языка «Английский (США)», параметр 2 — параметру 2 и т.д.

Примеры

Данный пример показывает гипотетическое сообщение 50001, которому в sys.messages соответствует значение «Число строк в %s равно %1d.» Функция FORMATMESSAGE подставляет вместо заполнителей параметров значения «Table1» и «5». Результирующая строка «Число строк в Table1 равно 5» сохраняется в локальной переменной @var1.

DECLARE @var1 VARCHAR(100)
SELECT @var1 = FORMATMESSAGE(50001, 'Table1', 5)