2017-08-17 12 views
0

我試圖根據查詢結果中找到的用戶ID輸入電子郵件地址, 查詢查找違反系統的用戶,並使用那些我們希望查詢另一個表的Ids,以獲得完整的電子郵件地址並將它們放入作爲收件人。如何將電子郵件發送到從動態查詢結果中獲取的地址?

新的錯誤 「消息14624,級別16,狀態1,過程sp_send_dbmail,238線 以下參數必須指定的至少一個。 」@recipients,@copy_recipients,@blind_copy_recipients「。 」

更新的代碼。

declare @bodymsg nvarchar(max) 
select @bodymsg = '<font face="calibiri" size="4" >Dear Users</font><br><br> 
<font face="calibiri" size="5" color="red">Please Explain the Exrta Locked Faxes</font><br><br> 
<font face="calibiri" size="4" >Check the Last Hour Snapshot Details Attached.<br><br> 
Thanks</font></end>' 

declare @users_fetched varchar(max) 
select @users_fetched = STUFF((SELECT ';' + Locked_Faxes_Last_Hour_Snap.userid from Locked_Faxes_Last_Hour_Snap 
         FOR XML PATH('') 
         ), 1, 1, '') 



declare @recipients varchar(max) 

SELECT 
@recipients = STUFF((SELECT ';' + concerned_staff.staff_email from concerned_staff where (concerned_staff.staff_id in (@users_fetched)) 
         FOR XML PATH('') 
         ), 1, 1, '') 

EXEC msdb.dbo.sp_send_dbmail 


@recipients = @recipients , 

@body= @bodymsg , 
@subject = 'Alert !!! Locked Faxes Violation Last Hour Snaps' , 
@profile_name = 'Database Profile 1', 
@query = 'use qtel select * from dbo.Locked_Faxes_Last_Hour_Snap' , 
@attach_query_result_as_file = 1, 
@query_attachment_filename ='Locked_Faxes_Last_Hour_Snap.csv', 
@query_result_separator =',', 
@query_result_no_padding=1, 
@exclude_query_output=1, 
@append_query_error=0, 
@query_result_header =1, 
@body_format ='HTML', 
@importance= 'HIGH'; 
+1

這個代碼引發的錯誤是什麼? –

+0

@MarcGuillot我正在嘗試在這裏使用非動態查詢「@recipients = STUFF((SELECT';'+ concerned_staff.staff_email from concerned_staff where(concerned_staff.staff_id ='umairrizvi') FOR XML PATH('') ) 1,1,'')「 並返回此錯誤」必須聲明標量變量「@recipients」。「 –

+0

要聲明您只需要的變量:declare @recipients varchar(max)並且要使用動態sql,您應該使用sp_executesql檢索地址https://docs.microsoft.com/en-us/sql/relational-databases/ system-stored-procedures/sp-executionql-transact-sql(看第三個例子,輸出參數) –

回答

0

在這種情況下,您可以執行下列操作之一:

  • 把你的查詢在存儲過程中,並傳遞參數。
  • 使用表達式構造SQL。
  • 創建基於表達式的變量並將該變量用作查詢的來源。
相關問題