学习笔记----SQL Server游标

概述

游标(Cursor)是处理数据的一种方法,为了查看或者处理结果集中的数据,游标提供了在结果集中一次一行或者多行前进或向后浏览数据的能力。可以把游标当作一个指针,它可以指定结果中的任何位置,然后允许用户对指定位置的数据进行处理。

游标的使用场景

我们平常对数据库中的数据进行增删改时,都是一次性处理若干行符合指定条件的数据,而如果有个业务场景,要求我们对某些数据逐行进行判断并采取不同的方式处理,这时候一般的语句就满足不了了.

游标可以方便从一个结果集中进行循环遍历数据在进行操作。它的思想就是从结果集中,一个一个取出来处理.当然,由于它是逐一处理的方式,游标的最大弊端就是低效。

实例

新建一张表作为练习:

字段名字段类型字段含义
IDint
Namenvarchar(50)
priceint价格
levelsnvarchar(4)等级

模拟需求:
根据价格设置书的等级,价格小于50便宜
价格 50-100中等
价格大于100的贵

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

--根据价格设置书的等级,价格小于50便宜
--价格 50-100中等
--价格大于100的贵

--定义一个游标
declare cur_Set_Lve cursor 
for 
select id,Price from Books

--打开游标
open cur_Set_Lve

declare @id int
declare @price decimal(18,0)
--获取数据 id,Price
fetch next from cur_Set_Lve into @id,@price

print @id
print @price
--循环获取
while(@@FETCH_STATUS=0)
--@@fetch_status是MicroSoft SQL SERVER的一个全局变量
--其值有以下三种,分别表示三种不同含义:【返回类型integer】
--0 FETCH 语句成功
---1 FETCH 语句失败或此行不在结果集中
---2 被提取的行不存在
begin

if(@price<50)
begin
update [dbo].[Books] set Levels='便宜' where ID=@id
end
else if(@price<100)
begin
update [dbo].[Books] set Levels='中等' where ID=@id
end
else
begin
update [dbo].[Books] set Levels='贵' where ID=@id
end
end
--关闭游标
close cur_Set_Lve
--释放游标
--deallocate
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值