Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 在SSRS中不使用存储过程将多值参数传递给变量_Sql Server_Reporting Services_Ssrs 2008 - Fatal编程技术网

Sql server 在SSRS中不使用存储过程将多值参数传递给变量

Sql server 在SSRS中不使用存储过程将多值参数传递给变量,sql-server,reporting-services,ssrs-2008,Sql Server,Reporting Services,Ssrs 2008,我没有访问sp的权限,但我创建了一个动态查询,它将接受一个多值参数,并将其传递给一个变量,然后该变量将在查询中使用。我的查询的简短示例 DECLARE @Parameter2 varchar(200) SET @Parameter2 = @Parameter1 SELECT personID from foo where filename IN (@Parameter2) 我有一个@Parameter1的报告参数,它将允许多个值,这些值将来自数据集的另一个查询。我可以将一个文件名从@Para

我没有访问sp的权限,但我创建了一个动态查询,它将接受一个多值参数,并将其传递给一个变量,然后该变量将在查询中使用。我的查询的简短示例

DECLARE @Parameter2 varchar(200)
SET @Parameter2 = @Parameter1

SELECT personID from foo where filename IN (@Parameter2)
我有一个@Parameter1的报告参数,它将允许多个值,这些值将来自数据集的另一个查询。我可以将一个文件名从@Parameter1传递到@Parameter2,没有问题,但是当选择多个文件名时,我会得到“在…处的语法无效”,因为参数是这样传递的“filename1,filename2,filename3”

如何将这些多个参数从@Parameter1解析为@Parameter2,以便在查询中使用,而无需存储过程?我尝试在这里查找不同的主题,并将@Parameter1拆分为“,“并在数据集属性中加入变量,但我仍然收到无效语法错误或声明标量变量错误


我在SQL Server上没有太多的经验,但是在预览中选择字符串时,似乎很难将字符串拆分,而不需要字符串首先通过SP。

< P>因为您可以执行动态SQL,请考虑下面的

DECLARE @Parameter1 varchar(200) = 'filename1,filename2,filename'

DECLARE @Parameter2 varchar(200) = ''''+Replace(@Parameter1,',',''',''')+''''

Declare @SQL varchar(max) = 'SELECT personID from foo where filename IN ('+@Parameter2+')'
Exec(@SQL)
生成的SQL如下所示:

SELECT personID from foo where filename IN ('filename1','filename2','filename')

既然您可以做动态SQL,请考虑下面的

DECLARE @Parameter1 varchar(200) = 'filename1,filename2,filename'

DECLARE @Parameter2 varchar(200) = ''''+Replace(@Parameter1,',',''',''')+''''

Declare @SQL varchar(max) = 'SELECT personID from foo where filename IN ('+@Parameter2+')'
Exec(@SQL)
生成的SQL如下所示:

SELECT personID from foo where filename IN ('filename1','filename2','filename')

谢谢你抽出时间。有没有一种方法可以实现这个查询来接受未知数量的文件名,而不是将它们列出来?@ShannonRogers。可以传递1到n个逗号delimited@JohnCappelletti我尝试过相同的查询,其中“Parameter1”是用户输入,就像Shannon的查询一样。但是,由于用户尚未设置“Parameter”,因此“Parameter2”中无法使用personID字段。我的查询中唯一的区别是“DECLARE Parameter1 varchar(200)=ParameteruserInput”,谢谢您的时间。有没有一种方法可以实现这个查询来接受未知数量的文件名,而不是将它们列出来?@ShannonRogers。可以传递1到n个逗号delimited@JohnCappelletti我尝试过相同的查询,其中“Parameter1”是用户输入,就像Shannon的查询一样。但是,由于用户尚未设置“Parameter”,因此“Parameter2”中无法使用personID字段。我的查询中唯一的区别是“DECLARE Parameter1 varchar(200)=ParameteruserInput”