Reproting Servcie中提供了参数多值,但是在存储过程中如何使用参数多值呢? 网上有对值进行Split的,我这里使用了表变量。下面是我的解决办法:
CustomerCode在Report中值可以多选,这里我是用JOIN函数将多值变为一个字符串。下面是Report中调用存储过程的语句:
="EXECUTE dbo.usp_test " &
" '" & join(Parameters!CustomerCode.Value,",")& "'"&
" "
存储过程中多于多值的处理,这里我将每个CustomerCode的值做为一行存储到了表变量,这样可以在后面跟其他表关联:
DECLARE @SQL VARCHAR(MAX)
DECLARE@tbCustomerCode TABLE (CustomerCodeVARCHAR(20))
SET @SQL ='( SELECT '''+REPLACE(@CustomerCode,',',''' UNION ALL SELECT ''')+''')'
INSERT INTO @tbCustomerCode
EXEC (@SQL)
处理后表变量数据如下:
A0002
A0003
A0004
上面表变量的数据作为条件筛选就可以得到自己想要的数据:
select * from test where CUSTOMER_CODE IN(SELECT * FROM @tbCustomerCode)
网上还有一些是用函数拆分多值的,可以参考:
http://blog.summitcloud.com/2010/01/multivalue-parameters-with-stored-procedures-in-ssrs-sql/
http://munishbansal.wordpress.com/2008/12/29/passing-multi-value-parameter-in-stored-procedure-ssrs-report/