SQL Server数据库游标的应用

游标的概念

游标是SQL 的一种数据访问机制。可以将游标简单的看成是查询的结果集的一个指针,可以根据需要在结果集上面来回滚动,浏览需要的数据。

游标的作用

查询数据,大多的语言都支持使用游标来检索SQL数据库中的数据,并保存查询的结果以供之后使用,比如我们在日常过程中需要重复处理容易个结果集,我们就可以选择只加载一次结果集,创建一个游标并反复使用,这样就比多次创建结果集效率要高的多。

游标的生命周期

游标的生命周期包含有五个阶段:声明游标、打开游标、读取游标数据、关闭游标、释放游标。

声明游标

DECLARE cursor_name CURSOR
FOR SELECT 字段 FROM 表

打开一个游标

OPEN cursor_name

循环一个游标

注意:@后面是指声明的变量
DECLARE @BookName nvarchar(2000),@BookCoding nvarchar(2000)

FETCH NEXT FROM cursor_name INTO @BookName,@BookCoding
WHILE @@FETCH_STATUS =0
BEGIN
print ‘name’+@BookName
FETCH NEXT FROM cursor_name INTO @BookName,@BookCoding
END

关闭游标

CLOSE cursor_name

释放游标

DEALLOCATE cursor_name
————————————————
cursor_name:游标的名称

案例

1.先创建一个Books表


2.需求
– 根据价格设置每本书的等级
– 价格<50便宜
– >50-100中等
– >=100贵
3.语句

--定义游标
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

4.执行结果

猜你喜欢

转载自blog.csdn.net/ITpmin/article/details/106338063