Raiseerror и Concat для сообщения - PullRequest
4 голосов
/ 22 октября 2008

Я бы хотел сделать что-то подобное

raiserror(concat('Error in case @isFishy =', @isFishy, ' @isSmarmy=', @isSmarmy, ' @isTasty = ', @isTasty), 10, 1)
--or
raiserror('Error in case @isFishy =' + @isFishy + ' @isSmarmy=' + @isSmarmy + ' @isTasty = ' + @isTasty, 10, 1)

Но это просто не работает. Как мне это сделать? Я в SQL Server 2005.

Ответы [ 2 ]

16 голосов
/ 22 октября 2008

Сообщение об ошибке в RAISERROR на самом деле имеет синтаксис, аналогичный функции printf в C, поэтому предположим, что ваши аргументы имеют тип целого числа, который вам нужно использовать:

raiserror(N'Error in case @isFishy = %d @isSmarmy = %d @isTasty = %d',10,1,@isFishy,@isSmarmy,@isTasty)

проверить BOL для деталей и других опций

0 голосов
/ 22 октября 2008

Я часто использую raiserror. У нас есть некоторые хранимые процедуры, которые вызываются из приложения .Net каждую ночь для пакетной обработки, и приложение .Net хочет регистрировать вывод процедуры таким образом. Я не знаю почему, но мне обычно приходится собирать строку перед вызовом raiserror.

...