用这种方法批量删除数据 alter proc deletedata
@data varchar(5000)
as
declare @sql varchar(6000)
if(@data<>'')
begin
set @sql=' delete from c where cid in ('''+@data+''')'
end
exec(@sql)
go
exec deletedata 'c6,c7' (@data 传入id)
但是我这里的ID 是这样的 589E45AF-7323-4E8D-ADFA-00122E7D0F8F 是36位·····要进行批量删除(有时候数据可能很多) ,麻烦大哥们帮我 改改我这个存储过程 !
create function [dbo].[f_split](@SourceSql varchar(8000),@StrSeprate varchar(10))
returns @temp table(a varchar(100))--实现split功能 的函数
as
begin declare @i int
set @SourceSql=rtrim(ltrim(@SourceSql))
set @i=charindex(@StrSeprate,@SourceSql)
while @i>=1
begin
insert @temp values(left(@SourceSql,@i-1))
set @SourceSql=substring(@SourceSql,@i+1,len(@SourceSql)-@i)
set @i=charindex(@StrSeprate,@SourceSql)
end
if @SourceSql<>''
insert @temp values(@SourceSql)
returnend一种方法是用以上函数把输入的字符串分割delete from c where cid in (select * from dbo.f_split(@data,','))
alter proc deletedata
@data text
as
declare @sql text
if(@data<>'')
begin
set @sql=' delete from c where cid in ('''+@data+''')'
end
exec(@sql)
go
可以考虑在程序中控制 循环删除
也可以用sql的游标来操作
exec deletedata 'c6'',''cx'',''c7'