【问题标题】:If stored procedure return no results do not send email如果存储过程没有返回结果,则不发送电子邮件
【发布时间】:2014-10-10 23:37:39
【问题描述】:

我创建了一个存储过程,以便通过电子邮件接收作为 HTML 表的“选择”结果并创建了一个工作。作业只有一个执行我的 SP 的步骤。

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

我该怎么做;在选择、SP、工作中?

谢谢。

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

开始 设置无计数;

    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

【问题讨论】:

    标签: html sql stored-procedures


    【解决方案1】:

    如果没有行,@xml 变量将为 NULL,基于此 NULL 值,您可以在不发送邮件的情况下返回。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-14
      • 1970-01-01
      • 2023-01-09
      • 2018-03-29
      • 2011-08-09
      • 2011-01-06
      • 2021-03-22
      相关资源
      最近更新 更多