GaussDB-MOVE

70 阅读1分钟

GaussDB-MOVE

功能描述

MOVE在不检索数据的情况下重新定位一个游标。MOVE的作用类似于FETCH命令,MOVE仅重定位游标而不返回行。

语法格式

| ``` MOVE [ direction [ FROM | IN ] ] cursor_name;

| ------------------------------------------------------ |

![](https://p6-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/56753e22b9dc4c9785f79710ea6e5325~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAgamVycnl3YW5nMTk4Mw==:q75.awebp?rk3s=f64ab15b&x-expires=1773996196&x-signature=nI47GbWwjbnPavTxWI26Z4mZ66c%3D)

其中direction子句为可选参数。

| ```
NEXT    | PRIOR    | FIRST    | LAST    | ABSOLUTE count    | RELATIVE count    | count    | ALL    | FORWARD    | FORWARD count    | FORWARD ALL    | BACKWARD    | BACKWARD count    | BACKWARD ALL 
``` |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

![](https://p6-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/685c03da1f3c4d78939367d461b79401~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAgamVycnl3YW5nMTk4Mw==:q75.awebp?rk3s=f64ab15b&x-expires=1773996196&x-signature=NQ0PO9JLesyRaeW3Kg28ZV1GmcI%3D)

#### 参数说明

MOVE命令的参数与FETCH的相同,详细请参见FETCH的[参数说明](https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/24.1.30/devg-dist/gaussdb-12-0637.html#ZH-CN_TOPIC_0000001865587444__zh-cn_topic_0000001704458313_zh-cn_topic_0059778422_sceb763c430654064b8f61e9aa0792af9)。

![](https://p6-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/ceeaba5706e44eb2a9f7bafbf80cc151~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAgamVycnl3YW5nMTk4Mw==:q75.awebp?rk3s=f64ab15b&x-expires=1773996196&x-signature=%2BFUS5%2B%2F9Wks3TvNfPuifqAAalnI%3D)

成功完成时,MOVE命令将返回一个“MOVE count”的标签,count是一个使用相同参数的FETCH命令会返回的行数(可能为零)。

#### 示例

| ```
--建表并插入数据。 gaussdb=# CREATE TABLE tbl_test(c1 int); gaussdb=# INSERT INTO tbl_test VALUES (generate_series(1,20));  --建立一个名为cursor1的游标。 gaussdb=# BEGIN; gaussdb=# CURSOR cursor1 FOR SELECT * FROM tbl_test ORDER BY 1;  --使用MOVE命令使游标向后移动5行,不返回结果。 gaussdb=# MOVE FORWARD 5 FROM cursor1; MOVE 5  --使用FETCH命令检索两行数据。 gaussdb=# FETCH FORWARD 2 FROM cursor1;  c1  ----   6   7 (2 rows)  --关闭游标并结束事务。 gaussdb=# CLOSE cursor1; gaussdb=# END;  --删除。 gaussdb=# DROP TABLE tbl_test; 
``` |
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

#### 相关链接

[CLOSE](https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/24.1.30/devg-dist/gaussdb-12-0526.html#ZH-CN_TOPIC_0000001865746572),[FETCH](https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/24.1.30/devg-dist/gaussdb-12-0637.html#ZH-CN_TOPIC_0000001865587444)

更多详情请参考GaussDB 文档中心:<https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/24.1.30/productdesc/qlh_03_0001.html>