1. 游标的定义
游标(Cursor)是一个存储在DBMS服务器上的数据库查询,它不是一条SELECT语句,而是被该语句检索出来的结果集。在存储了游标之后,应用程序可以根据需要滚动或浏览其中的数据。
2. 游标的特性
1)能够标记游标为只读,使数据能读取,但不能更新和删除
2)能控制可以执行的定向操作(向前、向后、第一、最后、绝对位置、相对位置等)
3)能标记某些列是可编辑的,某些列为不可编辑的
4)规定范围,使游标对创建它的特定请求(如存储过程)或对所有请求可访问
5)指示DBMS对检索出的数据进行复制,使数据在游标打开和访问期间不变化
3. 游标的分类
(1)显示游标
显示游标一次从数据库中提取多行数据
(2)隐式游标
隐式游标一般只从数据库中提取一个数据
4. 使用游标
1)在使用游标前必须声明它。在这个过程中实际上没有检索数据它只是定义要使用的select语句和游标选项
2)一旦声明就必须打开游标以供使用
3)对于填写数据的游标,根据需要取出各行
4)在结束游标使用时,必须关闭游标,可能的话,释放游标
5. 创建游标
6. 游标的使用模式
6.1 声明游标
首先,需要使用DECLARE语句声明游标,并定义游标的名称、数据类型和查询语句等属性。
例如:
游标的作用域
LOCAL
说明所声明的游标为局部的,其作用域为创建它的批处理、存储过程或触发器,即在批处理、调用它的存储过程或触发器执行完成后,该游标被系统隐式释放。
GLOBAL
指定该游标的作用域是全局的。由链接执行的任何存储过程或批处理中,都可以引用该有标的名称。该游标仅在断开连接时隐式释放。
6.2 打开游标
使用open打开游标
6.3 检索数据
使用 FETCH语句从游标中检索数据,可以一次检索一行或多行数据,并将数据存储在变量中进行处理。
FETCH cs1 INTO v1;
6.4 处理数据
在每次检索数据之后,使用变量中的数据执行所需的操作,例如,对数据进行计算、逻辑判断、修改等。
6.5 循环处理
通常使用循环结构(例如WHILE、LOOP)来便利游标中的所有数据,并在每次循环迭代中执行相应的操作。
6.6 关闭和释放游标
在处理完所有数据之后,使用CLOSE和DEALLOCATE语句关闭和释放游标。