如果存储过程返回没有结果不发送电子邮件

时间:2014-10-10 23:37:40

标签: html sql stored-procedures

我创建了一个存储过程,以便接收" select"的结果。作为HTML表通过电子邮件和创建工作。 Job只有一步执行我的SP。

当"选择"如果没有结果,我会收到空​​白电子邮件,但是当"选择"时,我不想收到任何电子邮件。没有结果。

我该怎么做;在select,SP,job?

谢谢。

CREATE PROCEDURE [dbo].[spTEST]
AS
   DECLARE @xml NVARCHAR(MAX)
   DECLARE @body NVARCHAR(MAX)

BEGIN         SET NOCOUNT ON;

    SET @xml = CAST((SELECT 
                        A as 'td','',
                        B as 'td','',
                        C as 'td','',
                        D as 'td','',
                        E as 'td'
                     FROM           
                        ......
                     WHERE 
                        .......   
                     FOR XML PATH('tr'), ELEMENTS) AS NVARCHAR(MAX))

    SET @body ='<html><body><H3>Test</H3>
                <table border = 1> 
                <tr>
                <th> A </th> <th> B </th> <th> C <th> D </th> <th> E </th>
                </tr>'    

    SET @body = @body + @xml +'</table></body></html>'

    EXEC msdb.dbo.sp_send_dbmail
           @profile_name = 'TestProfile',
           @body = @body,
           @body_format ='HTML',
           @importance = 'High',
           @recipients = '......',
           @subject = '......'
END

1 个答案:

答案 0 :(得分:0)

如果没有行,@xml变量将为NULL,根据此NULL值,您可以返回而不发送邮件。

DECLARE @xml NVARCHAR(MAX) =NULL
SET @xml = CAST((
....
FOR XML PATH('tr'), ELEMENTS ) AS NVARCHAR(MAX))  

IF ( @xml is NULL ) return