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

How to pass mutiple values as single parameter in ssrs

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

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

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

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

  select * from emp where deptname in (@dname)

  end 

首先,你需要一个拆分功能(假设你使用的是SQL服务器)。这些你都可以在网上找到,我用的就是这个。

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 在同一个数据库中。