sql清空表数据后重新添加数据存储过程的示例

复制代码 代码如下:

alter procedure [dbo].[sp_add_jurisdiction]

@ctablename varchar(20), –当前要删除、新增的表

@filedkeyvalue varchar(20), –要删除的字段值

@filedname varchar(20), –要删除的字段名

@filednameadd1 varchar(20), –要新增的字段名1

@filednameadd2 varchar(20), –要新增的字段名2

@sql varchar(6000) –新增值字符串,如:25,30;25,31

as

begin

declare @strsql_1 varchar(6000) — 删除

declare @strsql_2 varchar(6000) — 新增

begin try

begin transaction

set @strsql_1 = ‘delete from [‘+@ctablename+’] where ‘+@filedname+’ = ‘+@filedkeyvalue+”

exec(@strsql_1)

declare @run bit –继续循环的标志
declare @dotindex as int
declare @doindex as int
declare @strvalue1 as varchar(100)
declare @strvalue2 as varchar(100)
declare @strtext as varchar(100)
declare @returnvalue int
set @run = 1
set @returnvalue=0;
while( @run = 1)
begin
if(len(@sql)>0) –如果字符串还不为空,则进行一下操作
begin
set @dotindex=charindex(‘;’,@sql)
if(@dotindex = 0) –判断是否找到了’;’符号
begin
set @doindex=charindex(‘,’,@sql)
set @strvalue1 = substring(@sql,1,@doindex-1)
set @strvalue2 = substring(@sql,@doindex+1,len(@sql))
set @strsql_2 = ‘insert into [‘+@ctablename+’] (‘+@filedname+’,’+@filednameadd1+’,’+@filednameadd2+’) values (‘+@filedkeyvalue+’,’+@strvalue1+’,’+@strvalue2+’)’
exec(@strsql_2);
set @returnvalue=@returnvalue+1;
set @run=0
end;
else
begin
set @strtext = substring(@sql,1,@dotindex-1) –截取’,’前的字符串
set @sql=substring(@sql,@dotindex+1,len(@sql)) –把字符串的长度缩短至后一个
set @doindex=charindex(‘,’,@strtext)
set @strvalue1 = substring(@strtext,1,@doindex-1)
set @strvalue2 = substring(@strtext,@doindex+1,len(@strtext))
set @strsql_2 = ‘insert into [‘+@ctablename+’] (‘+@filedname+’,’+@filednameadd1+’,’+@filednameadd2+’) values (‘+@filedkeyvalue+’,’+@strvalue1+’,’+@strvalue2+’)’
exec(@strsql_2)
set @returnvalue=@returnvalue+1;
end
end
else
begin
set @run=0
set @returnvalue=@returnvalue+1;
end
end
commit transaction
return @returnvalue;
end try
begin catch
set @returnvalue=0;
rollback transaction
return @returnvalue;
end catch
end

(0)
上一篇 2022年3月22日
下一篇 2022年3月22日

相关推荐