2012-08-07 49 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