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 [ 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;