SQL邮件------数据库邮件

SQL邮件------数据库邮件,sql,sql-server-2008,Sql,Sql Server 2008,亲爱的各位, 我正在使用SQLServer2008 我面临着这样一种情况:我必须根据查询向单个或多个用户发送邮件。我尝试使用此stmt向多个收件人发送邮件 EXEC msdb.dbo.sp_send_dbmail @profile_name = 'imran' , @recipients= 'imran.khan@bbraun.com;amol.puranik@bbraun.com', @subject = 'Test mail' 它成功地发送了邮件 现在我想根据查询发送邮件。对于单个员

亲爱的各位, 我正在使用SQLServer2008

我面临着这样一种情况:我必须根据查询向单个或多个用户发送邮件。我尝试使用此stmt向多个收件人发送邮件

EXEC msdb.dbo.sp_send_dbmail 
@profile_name = 'imran' , 
@recipients= 'imran.khan@bbraun.com;amol.puranik@bbraun.com', 
@subject = 'Test mail'
它成功地发送了邮件

现在我想根据查询发送邮件。对于单个员工,这不是问题,但如果是多个员工,我如何向多个收件人发送邮件

这就是我的问题,在这个sp中,要发送多个收件人,一个必须使用不同的地址。我如何安排收件人,以便:;介于两者之间


谢谢。

使用这样的函数-

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

不幸的是,您没有给我们提供太多的信息—您没有向我们显示选择员工的查询,您没有告诉我们员工表的外观,因此我们最多只能猜测

所以我猜:您想以某种方式选择多个员工,他们的电子邮件地址应该连接在一起,用分号分隔;,然后用于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'

对于收件人,您可以通过[]对多个电子邮件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'

这些人的实际电子邮件地址是多少?如果是,请删除或匿名。