代码如下:
  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字符串截取 sql
  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
  更多信息请查看IT技术专栏                                                                                                                   
 

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。