FETCH - Amazon Redshift

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

FETCH

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

FETCH 根據游標內的目前位置擷取資料列。建立資料指標時,它會定位在第一列前面。在 之後FETCH,游標會位於擷取的最後一列。如果從可用資料列的結尾FETCH執行,例如遵循 FETCH ALL,則游標會保留在最後一個資料列之後。

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

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

如需詳細資訊,請參閱 DECLARECLOSE

語法

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

參數

NEXT

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

ALL

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

FORWARD 【 計數 | 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;