T-SQL查询结果变为变量

时间:2017-07-19 15:37:24

标签: sql sql-server tsql variables

我正在尝试将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

1 个答案:

答案 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