如果查询返回null,则SQL作业db mail不会发送邮件

时间:2015-02-02 20:13:08

标签: sql sql-server sql-server-2008

我的脚本运行在下面。

use msdb
go
exec sp_send_dbmail
@profile_name = 'New Pending',
@recipients ='hepl@example.com',
@subject = 'New Pending Data',
@query = 'use database exec PendingData2'

我想我需要在运行PendingData2之前添加一个步骤,如果它返回null或没有数据,它结束任务并且不会运行上面的步骤。

这是我的解决方案。

DECLARE @return_value1 int
EXEC @return_value1 = [database].[dbo].[PendingData2] 

if (@return_value1 > 0)
BEGIN
use msdb
exec sp_send_dbmail
@profile_name = 'New Pending',
@recipients ='help@example.com',
@subject = 'New Pending Data',
@query = 'use database exec PendingData2'
END
ELSE
BEGIN
Print 'nothing'
END

我还必须将以下代码添加到我的PendingData2存储过程中。

declare @parameters nchar(100)
declare @sql nchar(100)
declare @return_value1 Int
set @return_value1 = (select Sum(@a + @b + @c + @d + @e + @f + @g + @h + @i + @j + @k + @l + @m + @n + @o + @p + @q + @r + @t + @u + @v + @w + @x + @y) )
set @sql = 'select @return_value1'
set @parameters = '@return_value1 int OUTPUT'
exec sp_executesql @sql, @parameters, @return_value1 = @return_value1 OUTPUT
return @return_value1

@a等声明为Int,它基于表中的记录计数。

0 个答案:

没有答案