基于记录编号发送电子邮件的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>&

我有一个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><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语句中做同样的更改。再次感谢你!