FORMATMESSAGE (Transact-SQL)

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

Применимо для следующих объектов: SQL Server (SQL Server 2008 по текущую версию), База данных SQL Windows Azure (С первоначального выпуска по текущий выпуск).

Значок ссылки на раздел Синтаксические обозначения в 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).

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

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

Примеры.

В следующем примере используется сообщение репликации 20009, которое хранится в sys.messages в виде «Статью "%s" не удалось добавить в публикацию "%s".» Функция FORMATMESSAGE подставляет вместо заполнителей параметров значения First Variable и Second Variable. Результирующая строка «Статью "Первая переменная" не удалось добавить в публикацию "Вторая переменная".» сохраняется в локальной переменной @var1.

SELECT text FROM sys.messages WHERE message_id = 20009 AND language_id = 1049;
DECLARE @var1 VARCHAR(200); 
SELECT @var1 = FORMATMESSAGE(20009, 'First Variable', 'Second Variable'); 
SELECT @var1;

См. также

Справочник

THROW (Transact-SQL)

sp_addmergefilter (Transact-SQL)

sys.messages (Transact-SQL)

Системные функции (Transact-SQL)

RAISERROR (Transact-SQL)