我有一个参数将这些值传递给存储过程:
" CA,FL,NY,NJ,MA,CT,RI"。
我遇到的问题是,如果我选择" ALL"选项它不会带回任何" CT"值。它确实带回了CT"如果我单独选择它。我注意到没有#34; 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'
答案 0 :(得分:0)
问题出在SSRS上。我需要将它添加到主存储过程的参数部分:= join(参数!division.Value,“,”)。
答案 1 :(得分:-1)
创建一个将数据分隔为表
的函数CREATE FUNCTION [dbo].[Split]
(
@List NVARCHAR(2000),
@SplitOn NVARCHAR(5)
)
RETURNS @RtnValue TABLE
(
Id INT IDENTITY(1,1),
Value NVARCHAR(100)
)
AS
BEGIN
WHILE (CHARINDEX(@SplitOn,@List)>0)
BEGIN
INSERT INTO @RtnValue (value)
SELECT
Value = LTRIM(RTRIM(SUBSTRING(@List,1,CHARINDEX(@SplitOn,@List)-1)))
SET @List = SUBSTRING(@List,CHARINDEX(@SplitOn,@List)+LEN(@SplitOn),LEN(@List))
END
INSERT INTO @RtnValue (Value)
SELECT Value = LTRIM(RTRIM(@List))
RETURN
END
在您的报告中
Where column in (select dbo.split (@param))