代码之家  ›  专栏  ›  技术社区  ›  John Mo

SSRS中的存储过程参数加倍

  •  1
  • John Mo  · 技术社区  · 15 年前

    命令类型 以及 查询字符串

    当我尝试在Visual Studio/BIDS中执行该过程时 定义查询参数 too many arguments specified 错误

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

    2 回复  |  直到 10 年前
        1
  •  2
  •   John Mo    15 年前

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

    • EXEC procname@param1、@param2、@param3

    指定参数是it工作的两个要求。参数可以命名为任何名称,只要它们的前缀带有“@”符号。必须表示需要值的所有参数。当然,如果报表要在内部引用任何可选参数(在proc中指定了默认值的参数),或将其作为参数提供给用户,则必须在命令文本中表示这些可选参数,但不必指定可选参数,proc才能运行并返回结果集。

        2
  •  0
  •   DForck42    15 年前

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

        3
  •  0
  •   CSmith    3 年前

    所以我知道这很旧,但我确实找到了开始工作的方法,这是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"
    

    我尝试了我发现的几乎所有其他方法,它不会将参数链接到报告,直到我在上面为查询类型Text定义的数据集使用函数表达式这样做。