我会猜测并说这是您传递多值参数的“方式”。就我个人而言,在处理 SSRS 时,我使用视图、表函数或只是选择,因为 SSRS 可以原生地理解这一点:
Where thing in (@Thing)
实际上在 SSMS 中是这样的:
Where thing in (@Thing.Value1, @Thing.Value2, @Thing.Value3, etc...)
我猜你的 proc 正在使用一个实际上是逗号分隔数组的字符串。当您执行一个参数,该参数采用像“1,2,3,4”这样的字符串数组,并且您正在使用类似“Text”的参数来处理该过程,该参数接受多个值,您可以指定或从查询中获取,您基本上需要“如果您的过程采用包含数组的字符串的值,则加入参数。EG:调用 dbo.test 的 Proc 执行以返回值 1、2、4 的行,参数 id 如下所示:
exec dbo.test @ids = '1,2,4'
如果我想使用这个值在 SSRS 中运行 proc,并且我有一个名为“IDS”的多值参数,我将不得不在 SSRS 中的函数中手动组装数组,例如:
=JOIN(Parameters!IDS.Value, ",")
本质上是通过将逗号分隔值链中的多个值连接在一起来告诉 proc 运行参数“IDS”。您在左侧窗格的数据集中执行此操作,其中列出了“参数”而不是指定参数,就像 [@IDS] 一样,您单击“Fx”并放入上面的函数。
出于这个原因,我非常支持视图、选择和表函数,因为您可以使用谓词逻辑来处理这些问题。