存储过程中转入参数@in_id(varchar) 的值 1,2,3然后执行 update tableA set a=1 where id in (@in_id)报错 在将 varchar 值 '1,2,3' 转换成数据类型 int 时失败。请问要怎么解决

解决方案 »

  1.   


    declare @in_id varchar
    set @in_id = '1,2,3'
    declare @sql varchar(3000)
    set @sql = 'update tableA set a=1 where id in ('+@in_id+') '
    exec (@sql)
      

  2.   

    存储过程传in里面的参数的解决办法
    两种方法:
    1:charindex(','+ltrim(列名)+',',','+@s+',')>0 --@s传进来的字符变量如31,32,33 
    2:exec('@sql')  动态执行组合的@sql串
      

  3.   

    charindex
    或者加好引号再传进来!