亲爱的, 我正在使用SQL Server 2008。
我面临的情况是我必须根据查询向单个或多个用户发送邮件。我试过这个stmt向多个收件人发送邮件
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'imran' ,
@recipients= 'imran.khan@bbraun.com;amol.puranik@bbraun.com',
@subject = 'Test mail'
成功发送邮件。
现在我想根据查询发送邮件。对于单一员工而言,这不是问题,但如果它超过一名员工,我该如何邮寄给多个收件人。
我的问题是在此sp中发送多个收件人,必须将地址与;
分开。如何安排收件人,以便;
介于两者之间。
谢谢。
答案 0 :(得分:2)
不幸的是,你没有给我们很多东西 - 你没有向我们展示选择你的员工的问题,你没有告诉我们Employee
表的样子,所以我们所能做的就是猜测 - 充其量。
所以这是我的猜测:你想以某种方式选择多个员工,他们的电子邮件地址应该连接在一起,用分号(;
)分隔,然后用于你的sp_send_dbmail
电话
执行此操作的一种方法可能是:
DECLARE @recipients VARCHAR(4000)
SELECT
@recipients = STUFF((SELECT ';' + EMail
FROM dbo.Employees
WHERE (some condition here to find the right employees)
FOR XML PATH('')
), 1, 1, '')
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'imran',
@recipients,
@subject = 'Test mail'
答案 1 :(得分:0)
使用这样的函数 -
CREATE FUNCTION coltocsv
(
--your input parameters
)
RETURNS nvarchar(3000)
AS
BEGIN
-- Declare the return variable here
declare @keywords nvarchar(3000)
--Build your csv string of keywords
Select @keywords = null
SELECT @Keywords = Coalesce(@Keywords + '; ', '') +
ColumnName
from Table
where <some condition>
--- Return the result of the function
RETURN @keywords
END
答案 2 :(得分:0)
对于收件人,您可以按[]分隔多个电子邮件ID;
declare @ccmailid varchar(2000);
select @ccmailid = stuff((select '],['+ mailid from table_name
order by '],['+ mailid
for xml path('')),1,2,'')+']'
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'imran' ,
@recipients= @ccmailid,
@subject = 'Test mail'