在 sp_send_dbmail 的@recipients 中使用 select
using select in @recipients in 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'
对于每个 exec,我想发送邮件来设置 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;
您使用的语法不正确:
使用:
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;
我在程序中使用 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'
对于每个 exec,我想发送邮件来设置 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;
您使用的语法不正确: 使用:
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;