используя выбор в @recipients в sp_send_dbmail

Я использую sp_send_dbmail в процедуре. Я выполняю его 4 раза с разными странами.

exec pr_drop_out_addresses @country='NO'
exec pr_drop_out_addresses @country='SE'
exec pr_drop_out_addresses @country='FI'
exec pr_drop_out_addresses @country='DK'

Для каждого исполнителя я хотел бы отправить почту для набора получателей og. Они разные для каждой страны. Я пытаюсь решить эту проблему с помощью объявления @recipients, но у меня возникают проблемы с кавычками. Код такой. Есть предложения как обойти проблему?

declare @country varchar (10)
set @country='SE'


declare @recipients nvarchar(500)='''' +select CASE when @country='NO' then 'xxxx@xxx' when @country='SE' then 'yyy@xxxx' END+'''';                                 
declare @subject nvarchar(255) = 'Adresser fra ' + @country;
declare @query_attachment_filename nvarchar(255) = 'Adresser_for_'+@country +'_'+convert(varchar(10),getdate(),121) +'.csv';
EXEC msdb.dbo.sp_send_dbmail
    @profile_name = 'VNPSQL email',
    @recipients = @recipients,
    @query = 'SELECT * FROM NSGstatistikk_dev.dbo.test',
    @subject = @subject,
    @attach_query_result_as_file=1,
    @query_attachment_filename = @query_attachment_filename,
    @query_result_separator = ';',
    @query_result_no_padding = 1;

person Zeb    schedule 04.02.2015    source источник


Ответы (1)


Вы используете неправильный синтаксис: Используйте:

SELECT @recipients ='''' + CASE when @country='NO' then 'xxxx@xxx' when @country='SE' then 'yyy@xxxx' END+'''';

также кавычки вообще не требуются:

SELECT @recipients = CASE when @country='NO' then 'xxxx@xxx' when @country='SE' then 'yyy@xxxx' END;
person Vishal Gajjar    schedule 04.02.2015
comment
Большое спасибо. Я не знаю, что вы могли бы сделать это без qoutes. - person Zeb; 04.02.2015