Как создать строку, используя concat для назначения переменной

Я использую хранимую процедуру sp_send_dbmail и пытаюсь включить результат запроса в строку тела. Кажется, я не могу заставить это работать. Любые идеи будут высоко оценены.

use msdb
go

exec sp_send_dbmail
    @profile_name = 'WarehouseEmailer',
    @recipients = '[email protected]',
    @subject = 'Database Mail Test 1',
    @Body = 'This is a test email from SQL Server. <br> This should be line 2. <br> The 
    subject\'s first name is: '+ (select top(1) FirstName from Warehouse.dbo.Subject),
    @body_format = 'HTML'

Очевидно, что этот пример просто простой тест, но это именно тот тип данных, который я хотел бы передать хранимой процедуре для включения в тело электронного письма. Жду ваших ответов и большое спасибо за любые советы!


person WannaBeCoder    schedule 04.06.2015    source источник


Ответы (1)


Динамический SQL или конкатенированные строки нельзя передавать в такие параметры процедур.

Попробуй это:

use msdb
go
declare @msgbody nvarchar(1000)
set @msgbody = 'This is a test email from SQL Server.' + char(10) + 'This should be line 2. <br> The 
    subject''s first name is: '+ (select top(1) FirstName from Warehouse.dbo.Subject)

exec sp_send_dbmail
    @profile_name = 'WarehouseEmailer',
    @recipients = '[email protected]',
    @subject = 'Database Mail Test 1',
    @Body = @msgbody,
    @body_format = 'HTML'
person Dave Cullum    schedule 04.06.2015
comment
Спасибо за быстрый и лаконичный ответ Jiggs! Я предполагаю, что могу обернуть хранимую процедуру sp_send_dbmail в другую хранимую процедуру (объявив дополнительные переменные для других нестатических переменных, таких как получатели)? - person WannaBeCoder; 06.06.2015