大型数据库技术复习 —— 游标

简介

  • 游标提供了一种对从表中检索出的数据进行操作的灵活手段,就本质而言,游标实际上是一种能从包括多条数据记录的结果集中每次提取一条记录的机制 。
  • 游标使用步骤:
    (1)DECLARE声明游标
    (2)OPEN打开游标(填充游标数据)
    (3)从一个游标中FETCH(取)信息,对信息进行处理
    (4)CLOSE关闭游标
    (5)DEALLOCATE释放游标

游标声明

  • 语法格式
DECLARE <游标名> [INSENSITIVE][SCROLL] CURSOR
FOR <SELECT查询>
[FOR{READ ONLY|UPDATE[OF <列名>[,<列名>]]}] 
  • 参数说明:
    (1)INSENSITIVE指出所声明的游标为不敏感游标,即静态游标。
    (2)SCROLL指出该游标可以用FETCH命令里定义的所有方法来存取数据,允许删除和更新(假定没有使用INSENSITIVE选项);
    (3) FOR<SELECT查询>:决定游标结果集合
    (4)FOR READ ONLYFOR UPDATE说明游标为只读的或可修改的。默认是可修改的。
    (5)UPDATE [OF <列名>[,<列名>…]] 定义可以修改的列。如果省略 OF <列名>[,<列名>…],则允许修改所有列。

  • 如下:

DECLARE 学生表_cur1 SCROLL CURSOR
FOR SELECT 学号,姓名,性别,籍贯,所在院系,累计学分
FROM 学生表
WHERE 专业='计算机'

游标相关变量

  • @@CURSOR_STATUS:读取游标状态或检查游标变量是否与游标相关联。
  • @@FETCH_STATUS:读取最后一次游标数据提取操作结果状态。0:取操作成功;-1:取操作失败,所指定的位置超出了范围;-2:要取的行不在记录集内,已从集合中删除。
  • @@CURSOR_ROWS:显示游标集合中的行数。-n:正在向游标中载入数据,反映的是结果集当前的数据行数;n:结果集合的行数;0:结果集中没有匹配的行;-1:指出游标是动态的。

游标变量

DECLARE @cur_var CURSOR	-- 声明游标变量
DECLARE C1 CURSOR		-- 声明游标
FOR SELECT * FROM COURSE
SET @cur_var=C1

打开游标

  • 当将游标赋值给游标变量以后,就可以打开游标变量
OPEN @cur_var

读取游标数据

  • 使用 Fetch
USE 教学管理
Go
DECLARE 教师表_CURSOR CURSOR FOR
SELECT 工号,姓名,所在院系,职称 FROM 教师表 ORDER BY
工号
DECLARE @TNUM CHAR(5),@TNAME CHAR(10),@TDEPA
CHAR(20), @TRANK CHAR(10)
OPEN 教师表_CURSOR
FETCH NEXT FROM 教师表_CURSOR INTO @TNUM ,@TNAME ,@TDEPA, @TRANK
WHILE @@FETCH_STATUS=0
BEGIN
	SELECT @TNUM ,@TNAME ,@TDEPA, @TRANK
	FETCH NEXT FROM 教师表_CURSOR INTO @TNUM ,@TNAME ,@TDEPA, @TRANK
END
CLOSE 教师表_CURSOR
DEALLOCATE 教师表_CURSOR
GO

关闭游标

CLOSE 游标名

释放游标

DEALLOCATE 游标名
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

tanleiDD

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值