2015-07-03 48 views
0

我有一個查詢,它告訴我如果在接下來的24小時內有什麼事情發生,但是使用SQL Server代理,它會發送一封電子郵件,查詢是否返回結果,所以:SQL Server代理 - 發送沒有內容的電子郵件

我的問題

基於SQL代碼下面我將直接添加到SQL Server代理的工作,我可以將它設置爲不將查詢發送的電子郵件返回0行計數?

我已經做了一些研究,但是應用布爾does not工作,以檢測是否有結果還是不行,否則我可能做錯了:

代碼

DECLARE @xml NVARCHAR(MAX) 
DECLARE @body NVARCHAR(MAX) 

SET @xml = CAST(( 

SELECT 
Jobs.JobID AS 'td', '' , 
Jobs.JobName AS 'td', '', 
ToDoList.List AS 'td', '', 
Staff.StaffName AS 'td', '', 
CONVERT(DATE, ToDoItem.DueDate) AS 'td', '', 
ToDoItem.Comment AS 'td', '' 

FROM ToDoItem 
INNER JOIN Staff ON ToDoList.StaffID= Staff.StaffID 
INNER JOIN ToDoList on ToDoItem.ToDoListID = ToDoList.ToDoListID 
INNER JOIN JobSummaryAndStatus ON ToDoList.JSASID = JobSummaryAndStatus.JSASID 
INNER JOIN Jobs ON ProjectSummaryAndStatus.JobID= Jobs.JobID 

WHERE DueDate BETWEEN GETDATE() AND GETDATE() + 1 
AND Staff.StaffID = 20 

FOR XML PATH('tr'), ELEMENTS) AS NVARCHAR(MAX)) 


SET @body ='<html><body><H3>Jobs Due Today</H3> 
<table border = 1> 
<tr> 
<th> Job Ref </th> <th> JobName </th> <th> List Name </th> <th> Staff Name </th> <th> Due Date </th> <th> Comments </th></tr>'  

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


EXEC msdb.dbo.sp_send_dbmail 
@body = @body, 
@body_format ='HTML', 
@recipients = '[email protected];', 
@subject = 'Jobs Due Today'; 

研究

我試過這個很小的成功,所以希望它的我的SQL知識,這就是爲什麼我不能應用這個簡單的布爾檢查器的原因。我敢肯定它會在底部檢查@body標籤發送前的電子郵件,我可以和各種各樣的IF語句這裏

http://www.sqlservercentral.com/Forums/Topic1131198-391-1.aspx的幫助

回答

1

感謝。如果沒有從查詢任何結果@xml變量應該是空的,所以你應該能夠檢查:

if (len(@xml) > 0) 
    begin 
     EXEC msdb.dbo.sp_send_dbmail 
     @body = @body, 
     @body_format ='HTML', 
     @recipients = '[email protected];', 
     @subject = 'Jobs Due Today'; 
    end 

我還沒有嘗試過,但。

+0

生病現在試試這個 – Crezzer7

+1

即時檢查錯誤的一個,至少這是一個簡單的錯誤,我明白,乾杯 – Crezzer7