【发布时间】:2023-03-06 07:33:01
【问题描述】:
我有一个将这些值传递给存储过程的参数:
“加利福尼亚州、佛罗里达州、纽约州、新泽西州、马萨诸塞州、康涅狄格州、罗德岛州”。
我遇到的问题是,如果我选择“ALL”选项,它不会带回任何“CT”值。如果我单独选择它,它确实会带回“CT”。我注意到没有“MA”的记录,所以我不知道这是否与它有关。
我在 SQL 中使用逗号分隔的分隔符解析值。
另外,有谁知道如何在 SQL Server 中测试参数以查看它实际上是如何传递值的?
存储过程如下:
CREATE PROCEDURE plicense
(@division VARCHAR(500))
AS
SELECT a.lastname,
a.firstname,
b.divisionname
from Table A
INNER JOIN Table B
ON A.practid = B.practid
WHERE B.divisionname in (SELECT item from dbo.fnsplit(@division, ','))
SSRS 参数由如下所示的存储过程填充:
SELECT DISTINCT divisionid,
divisionname
FROM TABLE A
UNION
SELECT -1, 'N/A'
【问题讨论】:
-
在其上运行 sql profiler 以查看实际运行的查询。
-
发布过程....
-
多值参数不生成这样的字符串。它们生成
IN (a,b,c)子句。当你写WHERE someID in @ids并指定@ids是一个多值参数时,SSRS会发送WHERE someID in (id1,id2,id3),其中id1等是用户选择的参数值 -
还发布您的数据集定义 - 如何您如何调用存储过程?为什么您首先期望 CSV 列表?
-
我更新了我的问题以包含代码。我不期待 CSV 列表。如果在 Division 参数中选择了 Select All 默认选项,则填充 SSRS 报告时不包括任何“CT”记录。存储过程在 SSRS 的数据集中被调用——我只是在数据集属性中填充存储过程名称。我有许多以相同方式构建的 SSRS 报告。这是我第一次遇到这个问题。