2017-07-19 88 views
0

我想分配一個SQL查詢的結果到一個變量,但遇到問題。T-SQL查詢結果到變量

這裏是我的查詢:

use db 
SELECT name 
,ID 
,pID 
,pName 
,group 
FROM mName as m 
INNER JOIN pID_Check AS p ON m.ID= p.pID 
WHERE p.pName NOT LIKE m.name 

查詢工作正常不過我想安排它通過SQL Server代理和電子郵件成果每小時運行。
大多數情況下,查詢不會返回任何數據,但如果有行我需要它發送電子郵件。
本質上需要的行的值加到@Results變量和電子郵件,才觸發,如果@Results不爲空

SET @sub = 'Subject' 
EXEC msdb.dbo.sp_send_dbmail 
@profile_name = 'Profile', 
@recipients = '[email protected];', 
@body = @results, 
@subject = @sub 
+3

SP的接受一個'@ query'參數去完成這個,檢查文檔。 –

回答

1

你似乎想發送的結果設置爲郵件收件人 - 而這是可能的,我我沒有意識到你有可能以你嘗試過的方法粘住你的身體。
可以作爲通過SP_SEND_DBMAIL的另一個屬性的附件。請看下面的例子中,修改的結果包括設置爲附件:

DECLARE @myquery varchar(max) = ' 
SELECT name 
,ID 
,pID 
,pName 
,group 
FROM mName as m 
INNER JOIN pID_Check AS p ON m.ID= p.pID 
WHERE p.pName NOT LIKE m.name 
' 

SET @sub = 'Subject' 
EXEC msdb.dbo.sp_send_dbmail 
@profile_name = 'Profile', 
@recipients = '[email protected];', 
@body = @results, 
@subject = @sub, 
@query = @myquery, 
@attach_query_result_as_file = 1, 
@query_attachment_filename= 'MyFileName.csv'; 

所有SP_SEND_DBMAIL特性可以在這裏看到:https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-send-dbmail-transact-sql

+1

如果@attach_query_result_as_file爲0,結果會填充到正文中。 –

+0

@AlexK。我從來沒有這樣試過,雖然你確實讓我很好奇。我現在就給它一個鏡頭。感謝分享! – Eli

+0

yup似乎工作得很好......現在只需得到一個條件,如果查詢結果爲空則會跳過電子郵件......對此有何看法? 再次感謝您的幫助! –