

 Amazon Redshift 將不再支援從修補程式 198 開始建立新的 Python UDFs。現有 Python UDF 將繼續正常運作至 2026 年 6 月 30 日。如需詳細資訊，請參閱[部落格文章](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)。

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

# FETCH
<a name="fetch"></a>

使用資料指標擷取資料列。如需宣告資料指標的相關資訊，請參閱 [DECLARE](declare.md)。

FETCH 會根據資料指標內目前的位置擷取資料列。建立資料指標時，它會定位在第一列前面。FETCH 之後，資料指標會定位在擷取的最後一列。如果 FETCH 執行超出可用資料列的結尾，例如接在 FETCH ALL 之後，資料指標會留在最後一列後面。

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

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

如需詳細資訊，請參閱 [DECLARE](declare.md)、[CLOSE](close.md)。

## 語法
<a name="fetch-synopsis"></a>

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

## Parameters
<a name="fetch-parameters"></a>

NEXT  
擷取下一列。這是預設值。

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

FORWARD [ *count* \$1 ALL ]   
擷取下一個 *count* 資料列，或所有剩餘的資料列。`FORWARD 0` 會擷取目前資料列。若是單一節點叢集，count 的最大值為 `1000`。單一節點的叢集不支援 FORWARD ALL。

*cursor*   
新資料指標的名稱。

## FETCH 範例
<a name="fetch-example"></a>

以下範例會宣告名為 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;
```