可以作为varchar类型create procedure testp
@idstr varchar(1000)
as
begin
declare @sql varchar(2000)
set @sql='delete from table where id in (' + @idstr + ')'
exec(@sql)
end

解决方案 »

  1.   

    declare @a varchar(100)
    set @a='1,3,5'
    exec('delete [table] where id in ('+@a+')')
      

  2.   

    --存储过程应该这样写:
    create proc p_delete @str varchar(1000)
    as
    exec('delete from table where id in ('+@str+')')
    go--调用方法
    declare @a varchar(1000)
    set @a='1,2,5'  --这个是要传递的参数
    exec p_delete @a
      

  3.   

    --存储过程应该这样写:
    create proc p_delete @str varchar(1000)
    as
    exec('delete from table where id in ('+@str+')')
    go--调用方法
    declare @a varchar(1000)
    set @a='1,2,5'  --这个是要传递的参数
    exec p_delete @a
      

  4.   

    以上几位朋友说的我都已经使用了我想知道的是把集合作为参数是否有办法。比如,在ACCESS中,我常使用DELETE FROM TABLE WHERE ID=?的形式写SQL语句,然后使用COMMAND调用。我希望在批量删除时,集合也可以作为参数。谢谢
      

  5.   

    就作为一个字符串参数传进去就可以了。create procedure delete_sql
    @id varchar(1000)
    as
    begin
    declare @sql varchar(2000)
    set @sql='delete from table where id in ' + rtrim(@id)
    exec(@sql)
    end参数写成 (1,2,6,10)就可以了
      

  6.   

    create proc proc_del
    @str nvarchar(100)
    as
    declare @sql nvarchar(400)
    select @sql='delete from tablename where id in (' + @str + ')'
    exec sp_executesql @sqlgo--数据库里面调用
    exec proc_del '1,3,5'
    go
    你说的ADO对象是在什么开发工具里面用
    我给你vb的调用代码Set cmd = New ADODB.Command
    With cmd
        .ActiveConnection = con
        .CommandType = adCmdStoredProc
        .CommandText = "proc_del"
        .Parameters.Append .CreateParameter("@str", adVarWChar, adParamInput, 100, "1,3,5")
        .Execute
    End With
      

  7.   

    我试过上面的过程,mjhnet(天涯沦落人)的,好像没有用呢。
    但是用delete from testtable where id in('001','002')就可以了
    用下面的方法传递参数可以:
    create procedure delete_sql
    @name varchar(1000)
    as
    begin
    declare @sql varchar(2000)
    set @sql='delete from testtable where name in('+@name+')'
    exec(@sql)
    end
    执行上面的过程:declare @name varchar(100)
    set @name='''001'''+',''ccc''' 
    execute delete_sql @name
    set @name='''001'''+',''ccc''' --关键,如果写成@name='001,ccc'就不行了。大家给个更好的方法。