create procedure p(@para varchar(2000))
as
    exec('select * from a where b in ('+@para+')')
goexec p '''a'',''b'',''c'''

解决方案 »

  1.   

    create procedure p(@para varchar(2000))
    as
    select * from a where charindex(','+b+',',','+@para+',')>0
      

  2.   

    --调用
    exec p 'a,b,c'
      

  3.   

    create procedure p(@para varchar(2000))
    as
    declare @s varchar(8000)
    set @s = 'select * from a where b in (' + @para + ')'
    exec (@s)
    go
    --C#中:
    --        string p = "''a'',''b'',''c''"--实际执行的语句:
    exec p ''a'',''b'',''c''
    --参见例子:
    create table a(ID nvarchar(4),Name  nvarchar(50))
    go
    insert a
    select '1','AA' union all
    select '2','BB' union all
    select '3','CC'create table b(ID nvarchar(4),Name  nvarchar(50))
    go
    insert b
    select '1','1' union all
    select '2','1,2' union all
    select '3','1,2,3'
    --select * from a where a.id in (1,2,3)--第一种方法
    declare @s varchar(1000),@s2 varchar(1000)
    select @s2= name from b where id='3'
    set @s='select * from a where a.id in (' + @s2 + ')'
    select @s,@s2
    exec (@s)
    --select * from a where a.id in ('1','2','3')--第二种方法
    select * from a where charindex(','+id+',',(select ','+name+',' from b where id='3'))>0
    drop table a,b
      

  4.   

    参数两边用双引号"",每个字母,即a、b、c两边分别都有2个单引号
    string p = "''a'',''b'',''c''"