我在存储过程方面相当新,并将它们与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参数。
这在选择一个区时有效,但在选择多个区时则无效。有谁愿意帮忙吗?
答案 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,',',''',''')(我认为我的报价是正确的......)