SQL Server数据驱动的订阅停止发送
-
29-09-2019 - |
题
我有一个每小时检查新订单的报告。但是,它运行良好,我只想在至少一份订单时发送报告。如果报告为空 - 我根本不想发送报告。
为了扩展这一点,我只想在有新订单时发送报告。
想法?
解决方案
只需在DDS查询中添加条件即可检查订单时间。如果在过去的一个小时中有任何订单,您的查询应返回您的结果集,否则什么也不会返回。
例如,在查询中添加以下逻辑
DECLARE @HoursAgo int
SELECT Top 1 @HoursAgo = DateDiff('hh',getdate(), OrderTime)
FROM Orders
ORDER BY OrderTime DESC
在您的查询中添加以下子句
WHERE @HoursAgo > 0
您可能还需要添加额外的支票,以确保订单是从当天开始的。
其他提示
RDL数据集的属性称为“ Norows”,如果数据集没有返回任何行,则可以显示自定义消息。它仍然会发送空报告,并带有特殊消息。
如果您希望订阅不启动报告,那么我知道这样做的唯一方法是检查选择语句的行计数,如果您存储的过程,如果行计数为零,则丢弃错误。这不是一种优雅的方法来实现此功能,但它不会发送报告,因为错误发生在T-SQL侧,而SSR将无法呈现报告。
declare @rows int
select @rows = -1
<select statement here>
select @rows = @@rowcount
if ( @rows < 1 )
begin
RAISERROR ('no rows returned', 11, 1 );
end
不隶属于 StackOverflow