Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как создать строку с автоподстановкой (как в RAISERROR)?  [new]
AIice
Member

Откуда:
Сообщений: 88
Направьте, пожалуйста, в нужное направление поисков. Ищу функцию (надеюсь, что она существует), которая позволяет формировать сообщения, содержащие символы автоподстановки (%d, %s и т.д.)
RAISERROR это делать умеет, но есть ли что-то подобное в общем использовании, не знаю.
29 июн 05, 14:59    [1659403]     Ответить | Цитировать Сообщить модератору
 Re: Как создать строку с автоподстановкой (как в RAISERROR)?  [new]
GreenSunrise
Member

Откуда:
Сообщений: 12310
Если вы согласны обойтись только строковыми параметрами (%s), то можно использовать xp_sprintf. С учетом того, что параметры других типов можно привести к строковому, это не самый плохой выход.

Или можно заранее забить свои мессаги с параметризацией в sysmessages, а потом их использовать.
29 июн 05, 15:12    [1659478]     Ответить | Цитировать Сообщить модератору
 Re: Как создать строку с автоподстановкой (как в RAISERROR)?  [new]
AIice
Member

Откуда:
Сообщений: 88
Спасибо, xp_sprintf вполне подойдет. А вторую часть про sysmessages я не очень поняла, нельзя ли поподробнее?
29 июн 05, 15:20    [1659533]     Ответить | Цитировать Сообщить модератору
 Re: Как создать строку с автоподстановкой (как в RAISERROR)?  [new]
GreenSunrise
Member

Откуда:
Сообщений: 12310
exec master..sp_addmessage @msgnum = 60000, @severity = 1, @msgtext = 'text: %s, int: %d, hex: %#x'
raiserror (60000, 1, 1, 'aaa', 234, 0x5678)
В некотором смысле годится для форматирования строк, но получите вы готовую строку с подстановками только на клиенте.

В отличие от нее xp_sprintf даст вам результат в локальную переменную на сервере.
29 июн 05, 15:42    [1659658]     Ответить | Цитировать Сообщить модератору
 Re: Как создать строку с автоподстановкой (как в RAISERROR)?  [new]
AIice
Member

Откуда:
Сообщений: 88
Поняла, спасибо. Действительно не подходит, т.к. надо в локальную переменную. Но весьма поучительно, еще раз спасибо.
29 июн 05, 17:16    [1660236]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить