![](https://csdnimg.cn/release/download_crawler_static/9251525/bg4.jpg)
● SELECT 语句的选择列表中包含有集合表达式。
● 所有游标基表均没有建立唯一索引,而又要求建立键集游标时。
例:创建一个游标 cur_student,取得学员的学号、姓名、性别、出生年月日。其
代码如下:
DECLARE cur_student SCROLL CURSOR
for
select s_no,s_name,s_sex,s_age from t_student
10.1.3 游标操作
10.1.1 节讲述了游标的几个步骤,即声明游标,打开游标,获取数据,关闭游标,
释放游标,10.1.2 节讲述了声明游标,下面详细介绍其他操作。
1. 打开游标
定义了游标之后,在使用之前必须先将其打开才能使用,打开游标的语法如下:
OPEN { { [ GLOBAL ] cursor_name } | cursor_variable_name }
参数说明:
● GLOBAL 指定 cursor_name 指的是全局游标。
● cursor_name 是已声明但没有打开的游标。如果全局游标和局部游标都使用
cursor_name 作为其名称,那么如果指定了 GLOBAL,cursor_name 指的是全局
游标,否则 cursor_name 指的是局部游标。
● cursor_variable_name 是游标变量的名称,该名称引用一个游标。
在打开游标之后,可以使用全局变量@@cursor_rows 来显示游标内的记录条数。
使用全局变量@@fetch_status 来返回上一条游标 fetch 语句的状态。
全局变量@@CURSOR_ROWS 有以下几种取值:
● n 表示该游标所定义的数据已完全从表中读入,n 为全部的数据行。
● -m 表示该游标所定义的数据未完全从表中读入,m 为目前游标数据子集内的
数据行。
● 0 表示无符合条件的数据或该游标已被关闭或释放。
● -1 表示该游标为动态的,数据行经常变动,无法确定。
2. 获取数据
打开游标之后,可以使用 fetch 语句来读取游标中的记录。Fetch 语句用于检索游
标中的特定行,如上一条记录、下一条记录、首条记录、尾条记录等,其语法如下:
FETCH
[ [ NEXT | PRIOR | FIRST | LAST
| ABSOLUTE { n | @nvar }
| RELATIVE { n | @nvar }
]
FROM
]
{ { [ GLOBAL ] cursor_name } | @cursor_variable_name }
[ INTO @variable_name [ ,...n ] ]