如果查询返回null,则SQL作业数据库邮件不会发送
下面是我运行的脚本如果查询返回null,则SQL作业数据库邮件不会发送,sql,sql-server,sql-server-2008,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或no数据,那么它将结束任务,并且不运行上面的步骤 这
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或no数据,那么它将结束任务,并且不运行上面的步骤
这就是我的解决方案
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,其基于表中的记录计数 尝试在代码中使用IF EXISTSOk,或者在其他步骤中使用IF EXISTS with use database exec PendingData2?我只会在同一步骤中使用它。