什么存储过程从ssrs接收多值参数?

时间:2020-07-21 11:51:21

标签: sql-server stored-procedures reporting-services

所以我有存储过程和ssrs报告。
Ssrs报告采用多值参数并将其发送到存储过程。
存储过程期望该参数为varchar(50)类型(最大长度为15个字符左右)。
如果我在报告中选择1个值(因此未使用multi-select属性),则它正在工作,但是当我选择多个1个值时,它报告:procedure or function ... has to many arguments specified.

SSMS存储过程以什么格式接收多值参数?是像'a,b,c'这样的字符串吗?桌子吗?

并且我将来如何才能自行检查类似的事情(此数据流以及数据的发送和接收方式)?

1 个答案:

答案 0 :(得分:2)

SSRS将多值参数作为定界(n)varchar传递给存储过程。这意味着您需要在收到值后对它进行分割。

对于现代版本的SQL Server,您只需使用STRING_SPLIT

CREATE PROC dbo.YourProc @SomeInt int, @MultiVal varchar(8000) AS
BEGIN

    SELECT *
    FROM dbo.YourTable YT
         JOIN STRING_SPLIT(@MultiVal,',') SS ON YT.SomeCol = SS.[Value]
    WHERE YTIntCol = @SomeInt;

END;

对于较旧的版本,您需要使用其他拆分器,例如内联表值函数,CLR函数或XML拆分器。堆栈溢出中有100多个示例。

相关问题