如何在ssrs中将多个值作为单个参数传递

时间:2016-04-01 08:46:50

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

我想从ssrs中的文本框传递多个值。我尝试如下,但无法获得输出。

当我将多个值(IT,TL)传递给以下过程时,它不会返回任何数据。这里从SSRS报告参数传递的值如IT,TL。这些值像'IT,TL'一样用单引号传到后端。似乎单引号引起了这个问题。

任何人请帮我如何将多个值作为单个参数传递。

create procedure p2
  (
   @dname varchar(30)
  )
  as begin

  select * from emp where deptname in (@dname)

  end 

1 个答案:

答案 0 :(得分:0)

首先,您需要一个拆分功能(假设您使用的是SQL Server)。你可以在互联网上找到这些,这是我使用的。

CREATE FUNCTION [dbo].[udf_Split] 
   (  @List      varchar(8000), 
      @Delimiter varchar(5)
   ) 
   RETURNS @TableOfValues table 
      (  RowID   smallint IDENTITY(1,1), 
         [Value] varchar(100) 
      ) 
AS 
   BEGIN

      DECLARE @LenString int 

      WHILE len( @List ) > 0 
         BEGIN 

            SELECT @LenString = 
               (CASE charindex( @Delimiter, @List ) 
                   WHEN 0 THEN len( @List ) 
                   ELSE ( charindex( @Delimiter, @List ) -1 )
                END
               ) 

            INSERT INTO @TableOfValues 
               SELECT substring( @List, 1, @LenString )

            SELECT @List = 
               (CASE ( len( @List ) - @LenString ) 
                   WHEN 0 THEN '' 
                   ELSE right( @List, len( @List ) - @LenString - 1 ) 
                END
               ) 
         END

      RETURN 

   END 

然后,您可以将存储过程中的where子句更改为:

WHERE dept_name IN (SELECT value FROM dbo.udf_Split(@dname, ','))

这也假定存储过程和UDF在同一个数据库中。