我正在尝试将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 not null
SET @sub = 'Subject'
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'Profile',
@recipients = 'email@email.com;',
@body = @results,
@subject = @sub
答案 0 :(得分: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@email.com;',
@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