看我编写的存储过程是否和您意思~~~前提是要先把ID字段改回INT数据类型 create proc spinsertany @n int --定义一个参数,表示在@n行后面添加记录 as declare @count int select @count=(select count(ID) from 表1)+1 --统计插入新行后的总行数 if exists(select * from 表1 where ID=@n) --判断插入的记录数字是否超出范围 begin declare @col1 varchar(100), @col2 varchar(100) --定义两个做交换容器的变量 insert into 表1 values(@count,'nnn','nnn') --插入行 while @n<=@count-2 --2 --循环次数 begin select @col1=字段1 from 表1 where ID=@n+1 --取得要插入行的字段1的数据 select @col2=字段2 from 表1 where ID=@n+1 update 表1 set 字段1=(select 字段1 from 表1 where ID=@count) where ID=@n+1 --与最后一条记录交换 update 表1 set 字段2=(select 字段2 from 表1 where ID=@count) where ID=@n+1 update 表1 set 字段1=@col1 where ID=@count --把刚才取得的行数据替换给最后行 update 表1 set 字段2=@col2 where ID=@count select @n=@n+1 --循环增量,循环在需插入行以后行都与最后行做交换操作~ end end else print '请输入正确的参数或者参数超出范围' go我这里写了一个存储过程~~ 希望对您有用~~~~~~~~以后大家多交流交流~ 谢谢先~~~~
create proc spinsertany
@n int --定义一个参数,表示在@n行后面添加记录
as
declare @count int
select @count=(select count(ID) from 表1)+1 --统计插入新行后的总行数
if exists(select * from 表1 where ID=@n) --判断插入的记录数字是否超出范围
begin
declare @col1 varchar(100), @col2 varchar(100) --定义两个做交换容器的变量
insert into 表1 values(@count,'nnn','nnn') --插入行
while @n<=@count-2 --2 --循环次数
begin
select @col1=字段1 from 表1 where ID=@n+1 --取得要插入行的字段1的数据
select @col2=字段2 from 表1 where ID=@n+1
update 表1 set 字段1=(select 字段1 from 表1 where ID=@count) where ID=@n+1 --与最后一条记录交换
update 表1 set 字段2=(select 字段2 from 表1 where ID=@count) where ID=@n+1
update 表1 set 字段1=@col1 where ID=@count --把刚才取得的行数据替换给最后行
update 表1 set 字段2=@col2 where ID=@count
select @n=@n+1 --循环增量,循环在需插入行以后行都与最后行做交换操作~
end
end
else
print '请输入正确的参数或者参数超出范围'
go我这里写了一个存储过程~~ 希望对您有用~~~~~~~~以后大家多交流交流~
谢谢先~~~~