SSRS,必须声明标量变量错误查询数据集

时间:2019-02-20 14:26:34

标签: sql sql-server reporting-services ssrs-2012 ssrs-tablix

即使在Parameter声明出错后,我仍在使用以下查询,可以在SQL Server上执行但在SSRS上出错,请帮帮我。

declare @Fromdate date = '1/1/2018' ,@Todate date ='12/31/2018' ,@Date nvarchar(10) 
Begin
   set @Date = left(convert(VARCHAR,@Fromdate,112),6)

   while @Fromdate <= @Todate
   Begin 
     SET @Fromdate = (select REPLACE 
                             (LEFT(CONVERT(VARCHAR,DATEADD(MM,1,convert(date 
                      ,@Fromdate)),120),10),'-',''))
     if @Fromdate <= @Todate
     begin
        SET @Date  = left(convert(VARCHAR,@Fromdate,112),6)

        select @Date as Date
     END 
   END 
END

2 个答案:

答案 0 :(得分:0)

尝试将SSRS传递给单个结果集。也许以下方法会起作用。以下使用表变量插入日期,然后将其选择为结果集。

declare 
   @Fromdate date = '1/1/2018' ,
   @Todate date ='12/31/2018' ,
   @Date nvarchar(10) 

Declare @tbl Table (dt nVarChar(10))

Begin
   while @Fromdate <= @Todate
   Begin 
     SET @Fromdate = (select REPLACE 
                             (LEFT(CONVERT(VARCHAR,DATEADD(MM,1,convert(date 
                      ,@Fromdate)),120),10),'-',''))
     if @Fromdate <= @Todate
     begin
        SET @Date  = left(convert(VARCHAR,@Fromdate,112),6)

        Insert Into @tbl Values (@Date)
     END 
   END 
END

Select * From @tbl

更新:清理了一下。我确认这可以用作SSRS数据集:

Declare @Fromdate date = '1/1/2018' 
Declare @Todate date ='12/31/2018' 

Declare @tbl Table (dt nVarChar(10))

    Begin
       while @Fromdate <= @Todate
       Begin 
         SET @Fromdate = (select REPLACE 
                                 (LEFT(CONVERT(VARCHAR,DATEADD(MM,1,convert(date 
                          ,@Fromdate)),120),10),'-',''))
         if @Fromdate <= @Todate
         begin
            Insert Into @tbl Values (left(convert(VARCHAR,@Fromdate,112),6))
         END 
       END 
    END

    Select * From @tbl

SSRS: enter image description here

如果使用存储过程并将参数传递给存储过程: enter image description here

答案 1 :(得分:0)

我见过的一件事...( SSRS可能知道为什么)-但是-在将查询文本设置为数据集时,您可能需要首先将声明保留在查询文本中并在报告中接受查询,以便它创建数据集字段...然后删除声明,以允许查询文本使用报告参数。

首先,创建一个空白报告并添加两个参数: enter image description here

第二,使用查询文本创建数据集:(带有声明) enter image description here

第三,将参数映射添加到数据集中: enter image description here

您现在应该查看数据集中的[dt]字段: enter image description here

第四,从查询文本中删除声明。您将被提示定义查询参数。点击确定。它将说它无法更新字段列表。再次点击确定。 enter image description here

第五,转到“表向导”(在“插入”-“表”下),然后将[dt]字段添加到值部分。 enter image description here

最后,运行报告并输入日期和日期: enter image description here