有存储过程变量@para对应的代码是:select * from Table where tiaojian in (@para)当在程序里我传递 @para='001','002'不成功。
请问要怎么传递这个参数才能正确呢。

解决方案 »

  1.   

    select * from [Table] where charindex(','+tiaojian+',',','+@para+',')>0
      

  2.   

    传递参数进入不要用单引号了改为:@para=001,002
      

  3.   


    DECLARE @cmd NVARCHAR(MAX)
    SET @cmd='
    SELECT *
    FROM table
    WHERE BillNo IN ('+@para+')';EXEC(@cmd)
      

  4.   

    希望楼主使用的是2005及更高的版本,参数用逗号隔开就行了:
    declare @para nvarchar(max) = '1,2,3'
    declare @x xml = '<id>' + REPLACE(@para,',','</id><id>') + '</id>'
    select * from Table where tiaojian in (
    select CONVERT(int,Convert(varchar(max),T.d.query('text()'))) as value from @x.nodes('/*') as T(D)
    )
      

  5.   

    DECLARE @sql  varchar(MAX)
            @para='001','002'
    SET @sql='
    SELECT *
    FROM table
    WHERE BillNo IN ('+@para+')';
    EXEC(@cmd)
      

  6.   


    declare @para varchar(50),@sql varchar(8000)set @para='''001'',''002'''set @sql='select * from Table where tiaojian in ('+@para+')'exec(@sql)
      

  7.   

    用动态SQL实现,declare @para varchar(50)select @para='''001'',''002'''exec('select * from Table where tiaojian in ('+@para+')')
      

  8.   

    用动态SQl,可以采用楼上方法,
    declare @para varchar(50)
     select @para='''001'',''002''' 
    exec('select * from Table where tiaojian in ('+@para+')')
    如果完全用变量,可以采用表变量declare @para table( tiaojian varchar(20))
    insert into @para values('1') 
    select * from table where tiaojian in (select tiaojian from @para)