FETCH - Amazon Redshift

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

FETCH

使用資料指標擷取資料列。如需宣告資料指標的相關資訊,請參閱 DECLARE

FETCH根據游標內的目前位置擷取資料列。建立資料指標時,它會定位在第一列前面。在之後FETCH,游標會定位在擷取的最後一列上。如果離開可用列的結尾 (例如後面的 a) FETCHALL,則游標FETCH會保留在最後一列之後。

FORWARD0 會擷取目前的資料列而不移動游標;也就是說,它會擷取最近擷取的資料列。如果資料指標定位在第一列前面或最後一列後面,則不會傳回任何資料列。

擷取資料指標的第一列時,整個結果集會在領導節點上、記憶體中或磁碟上具體化 (如有需要)。由於在大型結果集內使用資料指標可能會對效能造成負面影響,因此建議您盡量使用替代方式。如需詳細資訊,請參閱使用游標時的效能考量

如需詳細資訊,請參閱 DECLARECLOSE

語法

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

參數

NEXT

擷取下一列。此為預設值。

ALL

擷取所有剩餘的資料列。(與FORWARDALL。相同。) ALL單節點叢集不支援。

FORWARD[計數 |ALL]

擷取下一個 count 資料列,或所有剩餘的資料列。FORWARD 0 會擷取目前資料列。若是單一節點叢集,count 的最大值為 1000。FORWARDALL單節點叢集不支援。

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;