1

使用 SSRS 和 SQL 2000 源,我有一个存储过程,它接受三个参数并返回一个结果集。

我有一个数据集,其中命令类型设置为StoredProcedure,过程名称在Query String中。

当我尝试在 Visual Studio/BIDS 中执行该过程时,“定义查询参数”对话框会显示该过程中列出的每个参数两次。为参数提供值并继续会导致too many arguments specified错误。

如何让 SSRS 识别并将正确数量的参数传递给存储过程?

4

3 回答 3

2

我找到了解决此问题的方法:

  • 将命令类型设置为“文本”
  • 指定过程名称参数:

    执行过程名称 @param1、@param2、@param3

“EXEC”指定参数都是它工作的要求。参数可以任意命名,只要它们以“@”符号为前缀即可。必须表示所有需要值的参数。当然,如果报告要在内部引用它们或将它们作为参数呈现给用户,则必须在命令文本中表示任何可选参数(那些在 proc 中指定的默认值),但不必为proc 运行并返回结果集。

于 2009-05-06T14:13:47.133 回答
0

检查并确保您没有在报告中声明额外的参数,如果您确实删除了 2 个额外参数,并确保这些参数是传递给存储过程的参数。

还要仔细检查并确保您没有在存储过程中意外声明 4 个参数。

于 2009-04-24T20:15:48.737 回答
0

所以我知道这很旧,但我确实找到了一种开始工作的方法,这是 SQL Server 2000 (8.0.2039) 存储过程和 SSRS 版本 13.0.4224.16

我做了一个表达式:

="DECLARE @Month int; " & "DECLARE @Year int; " & "DECLARE @Format int; "  & "DECLARE @SQL nvarchar(4000); " & "SET @Month = " & CStr(Parameters!iMonth.Value) & " ; " & "SET @Year = " & CStr(Parameters!iYear.Value) & " ; " & "SET @Format = " & CStr(Parameters!iFormat.Value) & " ; " & "SET @SQL = 'EXEC [dbo].[sp_MyProc] @Month = @Month, @Year = @Year, @Format = @Format'; EXECUTE sp_executesql @SQL , N'@Month int, @Year int, @Format int ', @Month , @Year , @Format"

我几乎尝试了我发现的所有其他东西,它不会将参数链接到报告,直到我在上面为查询类型定义的数据集执行此操作:文本并使用函数表达式。

于 2021-10-07T10:41:18.480 回答