2014-10-10 39 views
0

我創建了一個存儲過程,以便通過電子郵件接收「select」的HTML表格結果並創建了一個作業。工作只有一個步驟執行我的SP。如果存儲過程返回無結果不發送電子郵件

當「select」沒有返回任何結果時,我收到空白電子郵件,但是我不想在「select」返回任何結果時收到任何電子郵件。

我該怎麼做;在選擇,SP,工作?

謝謝。

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 

回答

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  
+0

這很好用!謝謝! – Dra7m 2014-10-11 07:49:42

+0

@ Dra7m,您可以接受 – radar 2014-10-11 12:53:52

+0

的答案對不起,我是StackExchange的新手。已經接受,謝謝! – Dra7m 2014-10-12 22:23:07

相關問題