基于记录编号发送电子邮件的SQL查询
我有一个sql查询:基于记录编号发送电子邮件的SQL查询,sql,sql-server,Sql,Sql Server,我有一个sql查询: DECLARE @tableHTML NVARCHAR(MAX) ; SET @tableHTML = N'<H1>Table name</H1>' + N'<table border="1">' + N'<tr><th>Column name1</th><th>Column name2</th>' + N'<th>Column name3</th>&
DECLARE @tableHTML NVARCHAR(MAX) ;
SET @tableHTML =
N'<H1>Table name</H1>' +
N'<table border="1">' +
N'<tr><th>Column name1</th><th>Column name2</th>' +
N'<th>Column name3</th><th>Column name4</th></tr>' +
CAST ( ( select td = login_time, '',
td = last_batch, '',
td = hostname ,'' ,
td = loginame, ''
from master.dbo.sysprocesses
where loginame<>'sa' and program_name=''
order by last_batch Desc
FOR XML PATH('tr'), TYPE
) AS NVARCHAR(MAX) ) +
N'</table>' ;
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'profile name',
@recipients='e-mail account',
@subject = 'e-mail subject',
@body = @tableHTML,
@body_format = 'HTML' ;
但我只需要发送电子邮件,如果有查询记录
有人能帮忙吗
谢谢。先检查数据是否存在。大概是这样的:
DECLARE @tableHTML NVARCHAR(MAX) ;
If Exists(Select 1 from master.dbo.sysprocesses
where loginame<>'sa' and program_name='')
Begin
SET @tableHTML =
N'<H1>Table name</H1>' +
N'<table border="1">' +
N'<tr><th>Column name1</th><th>Column name2</th>' +
N'<th>Column name3</th><th>Column name4</th></tr>' +
CAST ( ( select td = login_time, '',
td = last_batch, '',
td = hostname ,'' ,
td = loginame, ''
from master.dbo.sysprocesses
where loginame<>'sa' and program_name=''
order by last_batch Desc
FOR XML PATH('tr'), TYPE
) AS NVARCHAR(MAX) ) +
N'</table>' ;
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'profile name',
@recipients='e-mail account',
@subject = 'e-mail subject',
@body = @tableHTML,
@body_format = 'HTML' ;
End
非常感谢。这就是我所需要的。这个查询在查询窗口中运行得很好,但我仍然有一个问题:我在作业中使用这个查询,每次运行作业时,即使存在返回False,作业也会发送一封空电子邮件。。。你知道吗?我发布的代码应该会解决这个问题。请仔细检查您的代码,并特别查找begin和end语句。如果没有Begin/End,IF语句只对下一个命令有效。在本例中,该命令将下注于set语句。我知道这一点,但事实上,正如我所说,当我在查询编辑器中运行时,查询可以完美地工作。所以,当我复制/粘贴到作业时,它会发生我所说的。。。始终发送电子邮件!也许我的工作本身有些问题。。。无论如何谢谢你!我发现了问题!:我在where子句中做了一些更改,但忘记在If语句中做同样的更改。再次感谢你!