如何在 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 在同一个数据库中。
我想从 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 在同一个数据库中。