当 t-sql 结果集为空时,在 SSRS 报告 header 中显示日期

Display date in SSRS report header when t-sql resultset is empty

我有一个简单的 SSRS 报告,它由两部分组成:详细信息部分和 header 部分。 header 有标题,详细信息有存储过程结果集。

报告调用存储过程 dbo.usp_GetChanges,看起来像这样:

create procedure dbo.usp_GetChanges
as 

declare @Date int

select top 1 @Date = datekey
from DatesProcessed order by DatesProcessedid desc

select RunDate, OldName, NewName from EmployeeLog
where RunDate = @Date

如果最后一个 运行 日期是 20150215,则结果如下所示:

20150215    Joe    John
20150215    Mary   Marie
20150215    Bob    Bobo

对于 SSRS header,我使用 SP 的结果集来填充标题。所以当天报告的标题是:20150215 年的变化

但假设目前报告的 运行 没有任何更改,因此 SP 没有 return 任何内容。是否可以使用相同的存储过程 return @Date?

我知道有几种方法可以解决这个问题(即子报表、另一个 SP 等);我正在寻找可以集成到此存储过程中的解决方案。

我正在考虑向 SP 添加一个 OUTPUT 变量(即 @Date datetime OUTPUT),但 SSRS 将其解释为输入参数。我尝试将它隐藏在 SSRS 中,但它要求我提供参数值,即使它没有用于此目的。

谢谢。

在存储过程中检查 select 是否为 returning 行。如果是 return select 行,否则 select 日期。

IF NOT EXISTS(
  select RunDate, OldName, NewName from EmployeeLog
  where RunDate = @Date)
BEGIN
  select @Date RunDate
END
ELSE
  select RunDate, OldName, NewName from EmployeeLog
  where RunDate = @Date) 

如果有帮助请告诉我