Sql server 在SSRS中不使用存储过程将多值参数传递给变量
我没有访问sp的权限,但我创建了一个动态查询,它将接受一个多值参数,并将其传递给一个变量,然后该变量将在查询中使用。我的查询的简短示例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
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”