游标的使用
什么是游标
游标是SQL 的一种数据访问机制。可以将游标简单的看成是查询的结果集的一个指针,可以根据需要在结果集上面来回滚动,浏览需要的数据。
清楚了什么是游标后,我们来看看怎么简单的使用:
下面来举个栗子
- 创建游标
---创建游标
declare cur_set_lever CURSOR
for select id,price from books
就用下面这张表来举例:
下面我们用游标来根据价格设置每本书的等级
–价格<50 便宜
–价格>=50-100 中等
–价格<100 贵
---打开游标
open cur_set_lever
---获取数据 id price
declare @id int
declare @price decimal(18,2)
fetch next from cur_set_lever into @id,@price
- 循环获取每本书的价格并且修改等级
---循环获取
while(@@FETCH_STATUS=0)
begin
---修改等级
if(@price<50)
update books set Levels='便宜' where id=@id
else if(@price<100)
update books set Levels='中等' where id=@id
else
update books set Levels='贵' where id=@id
fetch next from cur_set_lever into @id,@price
end
- 最后关闭游标并且释放
---关闭游标
close cur_set_lever
---释放游标
deallocate cur_set_lever
- 好让我们看一下总体的运行
---创建游标
declare cur_set_lever CURSOR
for select id,price from books
---打开游标
open cur_set_lever
---获取数据 id price
declare @id int
declare @price decimal(18,2)
fetch next from cur_set_lever into @id,@price
---循环获取
while(@@FETCH_STATUS=0)
begin
---修改等级
if(@price<50)
update books set Levels='便宜' where id=@id
else if(@price<100)
update books set Levels='中等' where id=@id
else
update books set Levels='贵' where id=@id
fetch next from cur_set_lever into @id,@price
end
---关闭游标
close cur_set_lever
---释放游标
deallocate cur_set_lever
---查询看结果
select * from books
- 最后我们的Levels 的等级已经自动帮你设定好了