

 Amazon Redshift は、パッチ 198 以降、新しい Python UDF の作成をサポートしなくなります。既存の 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
```

## パラメータ
<a name="fetch-parameters"></a>

NEXT  
次の行を取得します。これがデフォルト値です。

ALL  
残りのすべての行を取得します (FORWARD ALL と同じです)。単一ノードクラスターでは、ALL はサポートされません。

FORWARD [ *count* \$1 ALL ]   
次の *count* の行、または残りのすべての行を取得します。`FORWARD 0` は、現在の行を取得します。単一ノードクラスターでは、数値の最大値は `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;
```