本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
FETCH
使用資料指標擷取資料列。如需宣告資料指標的相關資訊,請參閱 DECLARE。
FETCH 根據游標內的目前位置擷取資料列。建立資料指標時,它會定位在第一列前面。在 之後FETCH,游標會位於擷取的最後一列。如果從可用資料列的結尾FETCH執行,例如遵循 FETCH ALL,則游標會保留在最後一個資料列之後。
FORWARD 0 在不移動游標的情況下擷取目前的資料列;也就是說,它會擷取最近擷取的資料列。如果資料指標定位在第一列前面或最後一列後面,則不會傳回任何資料列。
擷取資料指標的第一列時,整個結果集會在領導節點上、記憶體中或磁碟上具體化 (如有需要)。由於在大型結果集內使用資料指標可能會對效能造成負面影響,因此建議您盡量使用替代方式。如需詳細資訊,請參閱使用游標時的效能考量。
語法
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;