RETRIEVE

使用并行检索游标从查询中检索行。

概要

RETRIEVE { <count> | ALL } FROM ENDPOINT <endpoint_name>

描述

RETRIEVE 使用先前创建的并行检索游标检索行。您需在独立的检索会话中检索行,分别建立直接连接至各个分段端点,这些端点将为每个独立分段提供结果。启动检索会话时,必须在连接请求中指定 gp_retrieve_conn=true。由于检索会话与并行检索游标及其对应端点相互独立,您可在同一检索会话中从多个端点执行检索操作。

并行检索游标关联有特定位置,该位置由检索操作使用。游标位置可设置为:查询结果首行之前、结果任意行位置,或结果末行之后。

注意!
由于数据库不支持可滚动游标,RETRIEVE命令只能将并行检索游标的位置向前移动。

创建时,并行检索游标位于首行之前。检索若干行后,游标定位于最近检索的行。

若检索操作超出可用行数范围,游标将停留在末行之后。

RETRIEVE ALL 操作始终使并行检索游标停留在末行之后。

参数

  • count
    • 检索下一个指定数量的行。count 必须为正数。
  • ALL
    • 检索所有剩余行。
  • endpoint_name
    • 用于检索行数据的端点名称。

输出

成功执行后,RETRIEVE命令将返回已获取的行(可能为空)以及获取的行数统计(可能为零)。

注意

使用 DECLARE ... PARALLEL RETRIEVE CURSOR 定义并行检索游标。

并行检索游标不支持 FETCH 或 MOVE 操作。

示例

开始交易:

BEGIN;

创建一个并行检索游标:

DECLARE mycursor PARALLEL RETRIEVE CURSOR FOR SELECT * FROM films;

列出游标的端点:

SELECT * FROM gp_endpoints WHERE cursorname='mycursor';

请注意每个端点关联的主机名、端口、认证令牌和名称。

在另一个终端窗口中,使用前次查询返回的主机名、端口和认证令牌启动检索会话。例如:

PGPASSWORD=d3825fc07e56bee5fcd2b1d0b600c85e PGOPTIONS='-c gp_retrieve_conn=true' psql -d testdb -h sdw3 -p 6001;

从某个端点(例如名为 prc10000001100000005 的端点)获取所有行:

RETRIEVE ALL FROM ENDPOINT prc10000001100000005;

退出检索会话。

\q

在原始会话中,关闭游标并结束事务:

CLOSE mycursor;
COMMIT;

兼容性

RETRIEVE 是一个数据库扩展功能。SQL 标准并未规定并行检索游标的相关规范。

另见

DECLARE, CLOSE