--1.1构造一个数据表,并插入数据行
create table neirong (xh int,neirong varchar(20))
declare @count int,@i int
set @count= 2000
set @i = 0
while(@i < @count)
begin
insert into neirong(xh,neirong) values (@i,'测试数据'+convert(varchar,@i))
set @i= @i + 1
end
--1.2动态更新每行的xh
--游标实现
declare @sql varchar(8000),@neirong varchar(20)
declare cursor1 cursor for select neirong from neirong --声明游标和游标中存储的列值
open cursor1 --打开游标
fetch next from cursor1 into @neirong --开始读取游标,将游标向下移行并把读取的值赋给变量
while @@FETCH_STATUS = 0 ----判断是否成功获取数据
begin
update neirong set xh = xh+1 where neirong = @neirong
fetch next from cursor1 into @neirong --将游标向下移行
end
close cursor1 --关闭游标
deallocate cursor1
耗时:5秒
--循环实现
declare @i int,@neirong varchar(30)
set @i = 1
while(@i <= 2000)
begin
select @neirong = neirong from neirong where xh = @i
update neirong set xh = xh+1 where neirong = @neirong
set @i = @i + 1
end
耗时:7秒
可见使用游标有时候比使用循环要方便的多,而且效率上也要高一些!