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

时间:2016-02-18 17:36:15

标签: sql-server tsql stored-procedures reporting-services ssrs-2008

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

报告调用存储过程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

如果最后一个rundate是20150215,那么结果如下:

20150215    Joe    John
20150215    Mary   Marie
20150215    Bob    Bobo

对于SSRS标头,我使用SP的结果集来填充标题。因此,该日报告的标题是: 20150215的变更

但是,让我们说,在报告发布的那一刻,没有进行任何更改,因此SP不会返回任何内容。是否可以使用相同的存储过程返回@Date?

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

我正在考虑向SP添加OUTPUT变量(即@Date datetime OUTPUT),但SSRS将其解释为输入参数。我试着将它隐藏在SSRS中,但它会询问我参数值,即使它没有用于此。

感谢。

1 个答案:

答案 0 :(得分:0)

在存储过程中检查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) 

如果有帮助,请告诉我