2017-01-27 24 views
1

私はspにアクセスできませんが、多値のパラメータを受け取り、変数に渡す動的クエリを作成しましたこれはクエリで使用されます。私の質問の短い例。ストアドプロシージャを使用せずにSSRSの変数に多値パラメータを渡す

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

SELECT personID from foo where filename IN (@Parameter2) 

データセットの別のクエリから来る複数の値を許可する@ Parameter1のレポートパラメータがあります。 @ Parameter1から@ Parameter2までの1つのファイル名を問題なく渡すことができますが、複数のファイルを選択すると、パラメータが 'filename1、filename2、filename3'のように渡されるため、「無効な構文...」になります。

これらの複数のパラメータを@ Parameter1から@ Parameter2に解析する方法は、ストアドプロシージャを使用せずにクエリで使用することができますか?ここではさまざまなトピックを見て、@ Parameter1を "、"変数をデータセットのプロパティに設定していますが、無効な構文エラーまたはスカラー変数エラーのいずれかが表示されています。SQL Serverでの経験はあまりありませんが、プレビューで選択した文字列をsp first。

答えて

0

あなたは動的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 ('[email protected]+')' 
Exec(@SQL) 

を考慮生成されたSQLは次のようになります。お時間を

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

感謝。これらのリストを出力するのではなく、未知数のファイル名を受け入れるようにこのクエリを実装する方法はありますか? @ShannonRogersそれはそうです。 –

+0

カンマ区切りに1〜nを渡すことができます –

+0

恐ろしいです。ありがとう! –

関連する問題