MOVE

说明

移动游标的位置

语法

move ::=

dir ::=

cnt ::=

参数

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;