MOVE¶
说明¶
移动游标的位置
参数¶
dir
- BACKWARD向后移动游标。
- FORWARD向前移动游标。
- RELATIVE移动游标时相对于游标当前位置。
- ABSOLUTE移动游标时相对于游标的起始位置。ABSOLUTE暂不支持。
默认为RELATIVE
count | ALL | NEXT | PRIOR
- count按指定方向和相对位置从游标中获取的元组的数量。为 0 时与 ALL意义相同。为负数时,相当于取数据方向反向(如 BACKWARD -2 相当于 FORWARD2 )。如果 count 大于游标中该方向的所有元组数,则相当于 ALL 。
- ALL按指定方向和起始位置移动到游标的最后。
- NEXT移动到下一个位置。
- PRIOR移动到前一个位置。
默认为NEXT
IN
在游标中移动位置。与 FROM 没有区别。
FROM
从游标中移动位置。与 IN 没有区别。
cursor_name
曾经用 DECLARE 定义的游标名。
注解
MOVE 是系统扩展。不仅可以用于嵌入式 SQL(E-SQL)中,也可以用于交互式 SQL 中。
当不指定相对位置、方向、移动数量时,默认是相对于当前位置向前移动一个元组。
要是游标可以反向移动,定义游标时必须指定 SCROLL 。
示例¶
示例1: 移动游标位置
-- 清理环境
DEALLOCATE cur1;
DROP TABLE tab1 CASCADE;
-- 创建表并插入数据
CREATE TABLE tab1(a INT);
INSERT INTO tab1 VALUES(1);
INSERT INTO tab1 VALUES(2);
INSERT INTO tab1 VALUES(3);
INSERT INTO tab1 VALUES(4);
INSERT INTO tab1 VALUES(5);
INSERT INTO tab1 VALUES(6);
SELECT * FROM tab1 ORDER BY a;
A(int) |
------------
1 |
------------
2 |
------------
3 |
------------
4 |
------------
5 |
------------
6 |
总数目:6
-- 声明一个游标(可反向移动)
DECLARE cur1 SCROLL CURSOR FOR SELECT * FROM tab1;/
-- 打开游标
OPEN cur1;
-- 向前移动 5 个位置
MOVE FORWARD 5 FROM cur1;
-- 获取数据
FETCH cur1;
A(int) |
------------
6 |
总数目:1
-- 向后移动 2 个位置
MOVE BACKWARD 2 FROM cur1;
FETCH cur1;
A(int) |
------------
5 |
总数目:1
-- 关闭游标
CLOSE cur1;
-- 删除游标和表
DEALLOCATE cur1;
DROP TABLE tab1;