首页 新闻 会员 周边

存储过程中in后面的参数怎么传入?

0
悬赏园豆:50 [已解决问题] 解决于 2012-03-30 14:41

如代入参数的一的SQL是这样的:

where id in(275,276)

现在 in 后面的内容要用参数传入,定义成什么类型,是varchar吗?

SQL语句要怎么写?

问题补充:

不好意思,上面可能没说清楚,in后面的参数个数是不确定的

artwl的主页 artwl | 专家六级 | 园豆:16736
提问于:2012-03-30 12:00
< >
分享
最佳答案
-2
 
declare @sql varchar
set @sql='select * from t where xxx in('+@invalue+')'
exec @sql
            
收获园豆:50
死白的man | 老鸟四级 |园豆:2135 | 2012-03-30 13:13
其他回答(5)
-1

是在SQL中吗?若在C#中,应该比较容易解决。

lonely_rain | 园豆:752 (小虾三级) | 2012-03-30 12:09

是存储过程中

支持(0) 反对(0) artwl | 园豆:16736 (专家六级) | 2012-03-30 12:37

@artwl: 是否可以用CTE呢。

支持(0) 反对(0) lonely_rain | 园豆:752 (小虾三级) | 2012-03-30 12:48
-1

where id in (@p1,@p2)

玉开 | 园豆:8822 (大侠五级) | 2012-03-30 12:12
List<int> parmList = new List<int>();

parmList.Add(1);parmList.Add(14);parmList.Add(15);parmList.Add(100);

SqlParameter[] parms = new SqlParameter[parmList.Count];

string sql = "... where id in("
for(int i=0;i<parmList.Count;i++){
if (i>0)sql+=",";
string parmName ="@p"+i.ToString();

sql += parmName;

parms[i] = new SqlParameter(parmName,SqlDbType.Int,4);
parms[i].Value = parmList[i];

}

sql += ")"

 下面可以使用sql和SqlParameter数组执行命令了

希望你懂了

支持(0) 反对(0) 玉开 | 园豆:8822 (大侠五级) | 2012-03-30 13:04
0
declare @a varchar(10)
declare @b varchar(10)
。。。where id in(@a,@b)
fish_1949 | 园豆:202 (菜鸟二级) | 2012-03-30 12:13
0

可以定义成vachar啊

where id in (@Ids)

思想改变命运 | 园豆:174 (初学一级) | 2012-03-30 12:17

这样会出错:Conversion failed when converting the varchar value '275,276' to data type int.

支持(0) 反对(0) artwl | 园豆:16736 (专家六级) | 2012-03-30 12:39
1
dudu | 园豆:30994 (高人七级) | 2012-04-23 08:41
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册