SSRS 创建临时日期时间 table 以 15 分钟的间隔更新 - 参数未显示

SSRS Create temporary datetime table updated with 15 minute interval - parameter not showing

我正在使用 SSRS 中的以下代码创建一个以 15 分钟为增量的临时日期时间 table:

--declare @Id varchar(20), @startdate datetime,@enddate datetime
--set @ID = 'J00000041'
--set @startdate = '20210601'
--set @enddate = '20210630';

create table #tempcalendar ([dispdate] [datetime], intervaldate [datetime],intervaltime [datetime])


    while @StartDate <= @EndDate+1
        begin
            insert into #tempcalendar values(@StartDate, convert(varchar,@StartDate,110),   convert(varchar(5),@StartDate,108) )
            set (@StartDate) = dateadd(minute,15,@StartDate)
            
        end

当我尝试在 SSRS 中 运行 时,其中一个参数没有出现在“定义查询参数”对话框中,并且我收到消息 'Must declare the scalar variable' 错误。我已经在代码中指出了问题所在:

set @StartDate = dateadd(minute,15,@StartDate)

我能够在 SSMS(这是我最初创建它的地方)中执行此代码,但是我似乎无法在 SSRS 中找到我可能在这方面出错的任何信息。我也试过在 @StartDate 中加上括号以显示 set (@StartDate) = dateadd(minute,15,@StartDate),但这没有用。

感谢您的帮助

SSRS 期望能够 return 数据集中 SQL 的元数据。这就是它为您确定列名和数据类型的方式。这也是为什么在数据集中只能有一个 select 语句的原因。

您可以将查询包装在存储过程中。 SSRS 可以调用过程并传入参数。该过程应该有一个 select 语句,该语句 return 是报告要处理的结果。该过程可以像您需要的那样复杂,并且可以抽象出嵌入报告中的代码。

我之前在 t-sql 中设置从 SSRS 传入的变量时看到过这个。

我认为问题是 SSRS 错误解释了查询。

我通过将另一个变量设置为传入的值来解决这个问题。 例如

DECLARE @StartDate2 datetime
SET @StartDate2 = @StartDate

.. 然后在查询的其余部分使用 @StartDate2

还要检查您的 variable/parameter 名称的每个实例是否完全相同,它们区分大小写。如果你传入 @X 但引用 @x SSRS 会认为这是一个新参数。