2017-01-27 40 views
1

我沒有訪問sp的權限,但我創建了一個動態查詢來接受多值參數,並將其傳遞給一個變量,然後將在查詢中使用它。我的查詢的簡短例子。在沒有存儲過程的情況下將多值參數傳遞到SSRS中的變量

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

SELECT personID from foo where filename IN (@Parameter2) 

我有@參數1報表參數,將允許多個值,這將來自數據集另一個查詢到來。我可以將@ Parameter1中的單個文件名傳遞給@Parameter2,但沒有問題,但是當選擇多個時,我會得到「無效的語法......」,因爲參數像這樣傳遞,如'filename1,filename2,filename3'。

如何從@ Parameter1解析這些多個參數到@Parameter2,這樣它就可以在沒有存儲過程的查詢中使用?我試着在這裏查看不同的主題,並通過「,」分裂@ Parameter1並加入可變的數據集屬性,但我仍然得到無效的語法錯誤或聲明標量變量錯誤。

我沒有太多的SQL Server的經驗,但似乎很難分裂字符串後,他們已經在預覽中選擇,沒有字符串通過首先。

回答

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

感謝您的時間。有沒有一種方法來實現這個查詢接受未知數量的文件名,而不是列出來? –

+0

@ShannonRogers它會。你可以通過1到n逗號分隔 –

+0

太棒了。謝謝! –

相關問題