FETCH - Amazon Redshift
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

FETCH

使用游标检索行。有关声明游标的信息,请参阅DECLARE

FETCH 根据游标中的当前位置检索行。在创建游标时,系统会将它放在第一行的前面。在执行 FETCH 后,系统会将游标放在检索的最后一行上。如果 FETCH 在运行时超出了可用行的结尾,例如跟在 FETCH ALL 后面,则游标会保留在最后一行的后面。

FORWARD 0 会提取当前行而不移动游标;即提取最近提取过的行。如果游标放在第一行的前面或最后一行的后面,则不返回任何行。

在提取游标的第一行时,会在领导节点上、内存中或磁盘上具体化整个结果集(如果需要)。由于将游标用于大型结果集可能会降低性能,因此建议使用备用方法(如果可能)。有关更多信息,请参阅使用游标时的性能注意事项

有关更多信息,请参阅DECLARECLOSE

语法

FETCH [ NEXT | ALL | {FORWARD [ count | ALL ] } ] FROM cursor

参数

NEXT

提取下一行。这是默认模式。

ALL

提取所有剩余的行。(与 FORWARD ALL 相同。) 对于单节点集群,不支持 ALL。

FORWARD [ count | ALL ]

提取后面 count 行,或者提取所有剩余的行。FORWARD 0 提取当前行。对于单节点集群,count 的最大值为 1000。对于单节点集群,不支持 FORWARD ALL。

cursor

新游标的名称。

FETCH 示例

以下示例声明一个名为 LOLLAPALOOZA 的游标,以便为 Lollapalooza 事件选择销售信息,然后使用该游标从结果集中提取行:

-- Begin a transaction begin; -- Declare a cursor declare lollapalooza cursor for select eventname, starttime, pricepaid/qtysold as costperticket, qtysold from sales, event where sales.eventid = event.eventid and eventname='Lollapalooza'; -- Fetch the first 5 rows in the cursor lollapalooza: fetch forward 5 from lollapalooza; eventname | starttime | costperticket | qtysold --------------+---------------------+---------------+--------- Lollapalooza | 2008-05-01 19:00:00 | 92.00000000 | 3 Lollapalooza | 2008-11-15 15:00:00 | 222.00000000 | 2 Lollapalooza | 2008-04-17 15:00:00 | 239.00000000 | 3 Lollapalooza | 2008-04-17 15:00:00 | 239.00000000 | 4 Lollapalooza | 2008-04-17 15:00:00 | 239.00000000 | 1 (5 rows) -- Fetch the next row: fetch next from lollapalooza; eventname | starttime | costperticket | qtysold --------------+---------------------+---------------+--------- Lollapalooza | 2008-10-06 14:00:00 | 114.00000000 | 2 -- Close the cursor and end the transaction: close lollapalooza; commit;