Sql server 2008 使用存储过程在SSRS中传递多个字符串值

Sql server 2008 使用存储过程在SSRS中传递多个字符串值,sql-server-2008,stored-procedures,ssrs-2008,reporting-services,Sql Server 2008,Stored Procedures,Ssrs 2008,Reporting Services,我对存储过程和将它们与SSR一起使用还相当陌生 我想使用一个存储过程创建一个简单的SSRS报告,该存储过程带有一个允许多个值的参数(来自单独过程的结果) 我有两个简单的存储过程,如下所示 Create Procedure WO @STARTDATE datetime, @ENDDATE datetime, @DISTRICT varchar(25) AS SELECT A.WO, A.CUST, A.DISTRICT, A.COMPL_DATE FROM WORK_ORDERS A WHERE

我对存储过程和将它们与SSR一起使用还相当陌生

我想使用一个存储过程创建一个简单的SSRS报告,该存储过程带有一个允许多个值的参数(来自单独过程的结果)

我有两个简单的存储过程,如下所示

Create Procedure WO
@STARTDATE datetime, @ENDDATE datetime, @DISTRICT varchar(25)
AS
SELECT A.WO, A.CUST, A.DISTRICT, A.COMPL_DATE
FROM WORK_ORDERS A
WHERE A.COMPL_DATE between (@STARTDATE) and (@ENDDATE) 
and A.DISTRICT_NAME in (@DISTRICT)

Create Procedure DISTRICT
AS
SELECT B.DISTRICT_NAME
FROM DISTRICTS B
在我的SSRS报告中,我使用捷运局程序的结果报告WO程序,使用“捷运局”参数和捷运局程序的可用值(允许多个值)。我还在WO程序的参数中使用了DISTRICT参数


这在选择一个地区时有效,但在选择多个地区时无效。有人愿意帮忙吗?

如果我没弄错的话,问题是处理字符串参数@district-大概,SSRS传递的是类似于“N,S,E,W”的东西,假设选择了4个区域-存储的进程将显示为:…A.district\u Name in('N,S,E,W')。。。仅当存在地区名称“N,S,E,W”时,才会返回值。所以,我认为需要将传入值拆分,并将其重新组合为'N','S','E','W'。不幸的是,SQL Server中没有SPLIT函数,因此您要么编写一个UDF(有几个POST可用),要么进行CLR调用

这里有一个聪明的(未经测试的)想法-尝试替换(@District,“,”,“,”)(我想我的引用是正确的…)