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

时间:2013-02-28 15:41:08

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

我在存储过程方面相当新,并将它们与SSRS一起使用。

我想使用存储过程创建一个简单的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报告中,我使用“DISTRICT”参数和DISTRICT程序中的可用值(允许多个值),使用DISTRICT程序中的结果报告WO程序。我也在WO程序的参数中使用了DISTRICT参数。

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

1 个答案:

答案 0 :(得分:0)

如果我没有弄错,问题是处理字符串参数@district - 大概是,SSRS传递的东西看起来像“N,S,E,W”,假设选择了4个区 - 那么存储的proc就会出现如下:... A.District_Name in('N,S,E,W')...如果有一个地区名称'N,S,E,W',它只返回一个值。因此,我认为您需要拆分传入的值并将其重新组合为“N”,“S”,“E”,“W”。不幸的是,SQL Server中没有SPLIT函数,因此您必须编写UDF(有几个帖子可用)或进行CLR调用。

这是一个聪明(并且未经测试)的想法 - 尝试替换(@District,',',''',''')(我认为我的报价是正确的......)