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.226590s