SQL Server 游标的简单介绍与使用

1)什么是游标?

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

2)游标的优缺点

优点:方便用户对数据库中的数据逐条进行处理
缺点:在进行大数据处理时,效率低下,占用的内存也比较大

3)游标的使用过程

1.声明游标
2.打开游标
3.循环游标
4.关闭游标
5.释放游标

另外,关于 @@FETCH_STATUS:
0 FETCH 语句成功
-1 FETCH 语句失败或此行不在结果集中
-2 被提取的行不存在

4)实例1

首先创建一张客户表(Customers),如图所示:
在这里插入图片描述
实现要求:修改消费等级(ConsumeLevel)这个字段,当消费金额(ConsumeAmount)>1000时,等级为高消费500-1000包含500,不包含1000,等级为中消费小于500 等级为低消费

代码如下:

--声明游标
declare cur_customer Cursor 
for 
select ID,ConsumeAmount from Customers
--打开游标
open cur_customer
--通过游标获取数据,ID,ComsumeAmount 取值
declare @id int
declare @Cacount int
fetch next from cur_customer into @id,@Cacount
--循环往下   判断如果有数据
while(@@FETCH_STATUS=0)
begin
	--修改消费等级
	if(@Cacount<500)
		update Customers set ConsumeLevel='低消费' where ID=@id
	else if(@Cacount<1000)
		update Customers set ConsumeLevel='中消费' where ID=@id
	else
		update Customers set ConsumeLevel='高消费' where ID=@id

	fetch next from cur_customer into @id,@Cacount
end
--关闭游标
close cur_customer
--释放游标
deallocate cur_customer

最终效果如图所示:
在这里插入图片描述

5)实例2

首先创建两张表,一张客户表(Customers),同上,一张统计表(TongJi),不插入任何数据

实现要求:做统计报表,统计客户表中每天的消费总金额,将该查询结果,一条条的插入到统计表

代码如下:

--声明游标
declare cur_tongji Cursor
for
select year(ConsumeTime),MONTH(ConsumeTime),day(ConsumeTime),sum(ConsumeAmount) 总金额
from Customers group by year(ConsumeTime),MONTH(ConsumeTime),day(ConsumeTime)
--打开游标
open cur_tongji
--浏览数据并获取
declare @yy nvarchar(50)
declare @mm nvarchar(50)
declare @dd nvarchar(50)
declare @yye int
fetch next from cur_tongji into @yy,@mm,@dd,@yye
while(@@FETCH_STATUS=0)
begin
	insert into TongJi values(@yy,@mm,@dd,@yye)
	fetch next from cur_tongji into @yy,@mm,@dd,@yye
end
--关闭游标
close cur_tongji
--释放游标
deallocate cur_tongji

最终效果如图所示:
在这里插入图片描述

以上就是游标的介绍与使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值