从多值SSRS参数插入到@Temp_Table值中

问题描述 投票:0回答:2

我正在使用ssrs报表生成器来生成报表,其中代码中有一部分必须将一些值插入到临时表中。这些值应从多值参数DatabaseName加载。我尝试了以下代码:

DECLARE @Rep_Temp TABLE(SurrogateKeyIDENTITY int not null IDENTITY (1,1),tempDBName nvarchar(100) NOT NULL);
INSERT INTO @Rep_Temp (tempDBName) VALUES (@DatabaseName);

仅当我选择一个值时有效,当我选择多个值时将给出错误。

我也尝试了以下代码,但没有成功:

INSERT INTO @Rep_Temp (tempDBName) VALUES (join(Parameters!DatabaseName.Value,","));

感谢您的协助。

最诚挚的问候,

sql reporting-services report ssrs-2008 ssrs-2012
2个回答

0
投票

我按照以下说明解决:

  1. 我在数据集中添加了参数:@DBNameString = join(Parameters!DatabaseName.Value,",")
  2. 我在插入表时尝试使用STRING_SPLIT,但由于我拥有SQL Server 2012“不是公认的内置函数名称”,因此无法使用。相反,我做了以下工作:

DECLARE @Rep_Temp表(SurrogateKeyIDENTITY int不为空IDENTITY(1,1),tempDBName nvarchar(100)NOT NULL);

DECLARE @DBs VARCHAR(500);
DECLARE @DBName VARCHAR(500);
DECLARE @charSpliter CHAR;

SET @charSpliter = ','
SET @DBs = @DBNameString + @charSpliter;

WHILE CHARINDEX(@charSpliter, @DBs) > 0
BEGIN
SET @DBName = SUBSTRING(@DBs, 0, CHARINDEX(@charSpliter, @DBs))
SET @DBs = SUBSTRING(@DBs, CHARINDEX(@charSpliter, @DBs) + 1, LEN(@DBs))

INSERT INTO @Rep_Temp (tempDBName) VALUES (@DBName);    
END 

最好的问候,

© www.soinside.com 2019 - 2024. All rights reserved.