2012-08-07 74 views
0

可能重複:
Parameterizing an SQL IN clause?
SQL Server SP - Pass parameter for 「IN」 array list?如何使用SQL選擇值的陣列 - SQL Server 2005中

在我的SP,我以數據串的參考表獲取篩選的SQL選擇。

這裏的情況,

Regionids = 2,6,8 我得到這個值的字符串@regions

在我的SP我做的計算和atlast有一個很大的SQL返回數據。 基於計算,我從中獲取記錄的日期和ID。 另外我想限制行到參考中指定的上述區域。

所以在我當SELECT, 和RG.regionids IN子句(@regions)

我得到錯誤, 轉換轉換爲varchar值 '2,6,8' int數據類型時失敗。

我該如何完成上述要求?

+0

可能重複[?SQL Server的SP - 爲 「IN」 的數組列表傳遞參數(http://stackoverflow.com/questions/537087/sql-server-sp-pass-parameter-for-in-array-list)或[參數化SQL IN子句?](http://stackoverflow.com/questions/337704/parameterizing-an-sql-in-clauses ) – LittleBobbyTables 2012-08-07 19:00:51

回答

0

最簡單的方法是使用動態SQL:

EXECUTE('SELECT * 
     FROM Region R 
     WHERE R.RegionID IN (' + @regions + ')') 
+0

謝謝!它工作.. – Sak 2012-08-07 19:33:29

+0

請注意,它是開放的和SQL注入攻擊,特別是如果@regions變量是用戶提供的。 – XN16 2012-08-07 19:44:17