第二章 SQL命令参考-FETCH

FETCH

使用游标从一个查询中获取数据

概要

FETCH [ forward direction { FROM | IN }]

I cursorname

where forward_direction can be empty or one of:

 

NEXT

FIRST

LAST

ABSOLUTE count RELATIVE count count ALL

FORWARD FORWARD count FORWARD ALL

 


 

描述

FETCH使用先前创建的游标检索行。

游标具有相关位置,由FETCH使用。光标位置可以在查询结果的第一行之前,在结果的任何特定行上或结果的最后一行之后。创建时,光标位于第一行之前。抓取一些行后,光标位于最近检索的行上。如果FETCH运行可用行的末尾,则光标位于最后一行之后。 FETCH ALL将始终将光标置于最后一行之后。

移动光标后,表单NEXT,FIRST,LAST,ABSOLUTE,RELATIVE取出一行。如果没有这样的行,则返回一个空的结果,并且光标位于第一行之前或之后的最后一行。

使用FORWARD的表单检索指示的向前移动的行数,使光标位于最后返回的行(或所有行之后,如果计数超过可用行数)。请注意,由于不支持可滚动光标,因此无法在Greenplum数据库中向后移动光标位置。您只能使用FETCH将光标向前移动到位。

RELATIVE o和FORWARD 0请求获取当前行而不移动光标,即重新获取最近获取的行。这将成功,除非光标位于第一行之前或最后一行之后,否则不会返回任何行。

Outputs

成功完成后,FETCH命令返回表单的命令标签

FETCH count

计数是读取的行数(可能为零)。 请注意,在psql中,命令标签实际上不会显示,因为psql会显示提取的行。

parameter

forward_direction

定义提取方向和要获取的行数。在Greenplum数据库中只允许转发提取。它可以是以下之一:

NEXT

获取下一行。如果忽略方向,则为默认值。

FIRST

获取查询的第一行(与ABSOLUTE 1相同)。只允许使用此游标的第一个FETCH操作。

LAST

获取查询的最后一行(与ABSOLUTE -1相同)。

ABSOLUTE count

获取查询的指定行。如果count超出范围,最后一行的位置。只有当count指定的行向前移动光标位置时才允许。

RELATIVE count

在当前光标位置前面提取查询的指定行。 RELATIVE将重新获取当前行(如果有)。如果允许光标向前移动,才能有此操作。

count

获取下一个计数行数(与FORWARD计数相同)。

ALL

获取所有剩余的行(与FORWARD ALL相同)。

FORWARD

获取下一行(与NEXT相同)

FORWARD count

获取下一个计数行数。 FORWARD 0重新获取当前行。

FORWARD ALL

获取所有剩余的行。

cursorname

打开光标的名称。

Notes

 

Greenplum的数据库不支持滚动游标,所以你只能使用抓取来向前移动光标位置。

ABSOLUTE抓取不会比导航到该行有相对运动速度快:底层的实现必须遍历所有中间的行。

通过游标更新数据还不被Greenplum数据引擎的支持。

DECLARE用于定义一个游标。使用MOVE语句改变游标位置而不检索数据。

示例

-- Start the transaction:

BEGIN;

-- Set up a cursor:

DECLAREmycursor CURSOR FOR SELECT * FROM films;

--Fetch the first 5 rows in the cursormycursor:

FETCH FORWARD 5 FROM mycursor;

code 丨title丨 did 丨 date_prod 丨 kind 丨 len

 

-+-

 

 

 

 

 

-+

 

 

 

BL101

 

The Third Man

 

101

 

1949-12-23

 

Drama

 

01:44

BL102

 

The African Queen

 

101

 

1951-08-11

 

Romantic

 

01:43

JL201

 

Une Femme est une Femme

 

102

 

1961-03-12

 

Romantic

 

01:25

P 301

 

Vertigo

 

103

 

1958-11-14

 

Action

 

02:08

P 302

 

Becket

 

103

 

1964-02-03

 

Drama

 

02:28

--Close the cursor and end the transaction:

 


 

CLOSEmycursor; COMMIT;

兼容性

SQL标准只允许在嵌入式SQL和模块中使用游标。 Greenplum数据库允许光标交互使用。

这里描述的FETCH的变体返回数据,就好像它是SELECT结果,而不是将它放在主机变量中。 除此之外,FETCH与SQL标准完全向上兼容。

包含FORWARD的FETCH形式以及FORWARD隐式的FETCH计数和FETCHALL的形式都是Greenplum数据库扩展。

相关参考

DECLARE, CLOSE, MOVE
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值