2011-02-04 34 views
1

親愛的, 我使用SQL Server 2008的SQL郵件------數據庫郵件

我面臨着一種情況,我根據查詢到郵件發送到一個或多個用戶。我試過這個stmt發送郵件給多個收件人

EXEC msdb.dbo.sp_send_dbmail 
@profile_name = 'imran' , 
@recipients= '[email protected];[email protected]', 
@subject = 'Test mail' 

它成功發送郵件。

現在我想根據查詢發送郵件。對於單一員工來說,這不是問題,但如果是多個員工,我怎樣才能將郵件發送給多個收件人。

這是我的問題是在這個SP發送多個收件人之一必須分開地址與;。我如何安排收件人,以便;介於兩者之間。

謝謝。

+1

是這些人的實際電子郵件地址?如果是,請刪除或匿名它們。 – 2011-02-04 22:25:22

回答

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

不幸的是,你不給我們提供了很多去 - 你不告訴我們的查詢來選擇你的員工,你不告訴我們什麼關於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'