在SSRS 2005中,必须声明标量变量

时间:2009-02-10 12:43:14

标签: reporting-services scalar multi-select

我有一个运行存储过程的报告:

EXEC ra_spProjectCalendar @Month, @Year, @ProjectID

ProjectID是一个多选下拉列表。选择单个项目时,它可以正常工作。如果我选择多个项目,我会收到错误:

"Must declare scalar variable "@ProjectID"

当我从“数据”选项卡运行它时工作正常,但是,当我将其置于“预览”模式时,我遇到了问题。

2 个答案:

答案 0 :(得分:2)

通过将查询构建为表达式,我得到了类似的工作 - 在您的示例中

="EXEC ra_spProjectCalendar @Month = '" & Parameters!Month.Value & "',@Year='" & Parameters!Year.Value & "',@ProjectID = '" &  Join(Parameters!ProjectID.Value, ",") & "'"

目标SP中的某些代码将多选字符串拆分为临时表,该表用于连接以创建输出。

我不记得为什么我们最终这样做了 - 这是我们转向SSRS的开始,事情已经发生了一些变化 - 但这可能是你描述的问题。

答案 1 :(得分:2)

我发生了同样的错误:必须声明标量变量。

我现在意识到要检查的第一件事是,当您将查询作为文本输入,或者将存储过程作为存储过程类型输入时,ssrs会自动在数据集属性的参数选项卡中创建参数条目。 如果它不创建它们,则无法正确读取您的查询。

在我的情况下,我使用OPENQUERY来调用分析服务多维数据集并引用包含许多方括号的字段名。不幸的是,SSRS喜欢重新格式化你的代码,以便很好地形成“[Measures]。[SomeMeasure]”变成这个丑陋的逃避角色一塌糊涂 [[处理]] [Somemeasure]]]

如果您在另一个工具中编辑该查询,然后将其重新复制回ssrs,则ssrs无法读取该语法!即使它生成它!因此,删除所有额外的方括号并替换双引号并再次使其工作并生成参数。