使用 SSRS 和 SQL 2000 源,我有一个存储过程,它接受三个参数并返回一个结果集。
我有一个数据集,其中命令类型设置为StoredProcedure,过程名称在Query String中。
当我尝试在 Visual Studio/BIDS 中执行该过程时,“定义查询参数”对话框会显示该过程中列出的每个参数两次。为参数提供值并继续会导致too many arguments specified
错误。
如何让 SSRS 识别并将正确数量的参数传递给存储过程?
使用 SSRS 和 SQL 2000 源,我有一个存储过程,它接受三个参数并返回一个结果集。
我有一个数据集,其中命令类型设置为StoredProcedure,过程名称在Query String中。
当我尝试在 Visual Studio/BIDS 中执行该过程时,“定义查询参数”对话框会显示该过程中列出的每个参数两次。为参数提供值并继续会导致too many arguments specified
错误。
如何让 SSRS 识别并将正确数量的参数传递给存储过程?
我找到了解决此问题的方法:
指定过程名称和参数:
执行过程名称 @param1、@param2、@param3
“EXEC”和指定参数都是它工作的要求。参数可以任意命名,只要它们以“@”符号为前缀即可。必须表示所有需要值的参数。当然,如果报告要在内部引用它们或将它们作为参数呈现给用户,则必须在命令文本中表示任何可选参数(那些在 proc 中指定的默认值),但不必为proc 运行并返回结果集。
检查并确保您没有在报告中声明额外的参数,如果您确实删除了 2 个额外参数,并确保这些参数是传递给存储过程的参数。
还要仔细检查并确保您没有在存储过程中意外声明 4 个参数。
所以我知道这很旧,但我确实找到了一种开始工作的方法,这是 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"
我几乎尝试了我发现的所有其他东西,它不会将参数链接到报告,直到我在上面为查询类型定义的数据集执行此操作:文本并使用函数表达式。