在没有存储过程的情况下将多值参数传递给SSRS中的变量
Passing a multi-value parameter into a variable in SSRS without a stored procedure
我无权访问 sp,但我创建了一个动态查询,它将接受一个多值参数,将其传递给一个变量,然后该变量将在查询中使用。我的查询的简短示例。
DECLARE @Parameter2 varchar(200)
SET @Parameter2 = @Parameter1
SELECT personID from foo where filename IN (@Parameter2)
我有一个 @Parameter1 的报告参数,它将允许多个值,这些值将来自数据集的另一个查询。我可以将单个文件名从 @parameter1传递给 @parameter2没有任何问题,但是选择多个文件时,我会得到“无效的语法在...',',因为参数像这样传递了'filename1,filename2,filename3'。[= = = = = = 11=]
如何将这些多个参数从@Parameter1 解析为@Parameter2,以便它可以在没有存储过程的查询中使用?我已尝试在此处查看不同的主题并将 @Parameter1 拆分为“,”并在数据集属性中加入变量,但我仍然遇到无效语法错误或声明标量变量错误。
我在SQL服务器方面经验不多,但在预览中选择字符串后似乎很难拆分,如果字符串不先通过 sp。
既然你可以做 DYNAMIC 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')
我无权访问 sp,但我创建了一个动态查询,它将接受一个多值参数,将其传递给一个变量,然后该变量将在查询中使用。我的查询的简短示例。
DECLARE @Parameter2 varchar(200)
SET @Parameter2 = @Parameter1
SELECT personID from foo where filename IN (@Parameter2)
我有一个 @Parameter1 的报告参数,它将允许多个值,这些值将来自数据集的另一个查询。我可以将单个文件名从 @parameter1传递给 @parameter2没有任何问题,但是选择多个文件时,我会得到“无效的语法在...',',因为参数像这样传递了'filename1,filename2,filename3'。[= = = = = = 11=]
如何将这些多个参数从@Parameter1 解析为@Parameter2,以便它可以在没有存储过程的查询中使用?我已尝试在此处查看不同的主题并将 @Parameter1 拆分为“,”并在数据集属性中加入变量,但我仍然遇到无效语法错误或声明标量变量错误。
我在SQL服务器方面经验不多,但在预览中选择字符串后似乎很难拆分,如果字符串不先通过 sp。
既然你可以做 DYNAMIC 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')