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/

 

 

 

 

你可能感兴趣的:(Reporting,servcie)