SSRS如何将多值参数传递给存储过程

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/

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值