FORMATMESSAGE (Transact-SQL)
Форматирует сообщение на основе текста, имеющегося в sys.messages. Функция FORMATMESSAGE работает аналогично инструкции RAISERROR, но в отличие от нее не выводит сообщение немедленно, а возвращает сформированный текст для дальнейшей обработки.
Синтаксис
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)
См. также