我有一个简单的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中,但它会询问我参数值,即使它没有用于此。
感谢。
答案 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)
如果有帮助,请告诉我