fetch-clause

fetch-clauseは、フェッチできる行の数を制限します。

フェッチ節の構文

構文図を読むビジュアルシンタックスダイアグラムをスキップする FETCH FIRSTNEXT1行数取得ROWROWS ONLY

フェッチ句の説明

fetch-clauseは、取得できる行の最大数を設定します。 この文節が指定されない場合に、中間結果表にある行数に関係なく、アプリケーションが最大 fetch-row-count 行までしか取り出さないことを指定します。 fetch-row-count 行を超えて取り出そうとすると、通常のデータの終わりと同様に処理されます。

fetch-clause を含む副選択または全選択は、以下のオブジェクトで指定することはできません。
  • ビューの最外部の全選択
  • マテリアライズ照会表の定義

fetch-clause は、SELECT INTO ステートメントでも指定できます。

取得される行のセットが予測どおりのセットになるように、中間結果表の各行のソート順序を一意的に決定するソート・キーを ORDER BY 節で指定する必要があります。 中間結果表で、一部の行のソート・キーが重複している場合、それらの行の順序は確定されません。 ORDER BY 節がない場合、中間結果表の順序は確定されません。 中間結果表の順序が決定的でないと、取得された行集合は予測不能になります。 fetch-clause と ORDER BY 文節の両方が指定される場合、fetch-clause は、順序付けされたデータで処理されます。

全選択に FROM 文節の SQL データ変更ステートメントが入っている場合は、 フェッチされる行の数の限度に関係なく、すべての行が変更されます。

行数取得

取り出す最大行数を指定する定数または変数。 fetch-row-count は、正数またはゼロの数値でなければなりません。 値が BIGINT ではない場合、値は BIGINT 値にキャストされます。 fetch-row-count は NULL 値であってはなりません。

変更の開始fetch-clause が prepare 属性として指定されている場合、fetch-row-count は変数を参照してはなりません。変更の終わり

fetch-clause を最大 64 ビット整数より大きくない fetch-row-count の定数と一緒に使用すると、最大でも既知の行数が取り出される事実に基づき、副選択または全選択の照会の最適化に影響します。

結果表を指定の行数に限定することで、パフォーマンスが向上します。 場合によっては、データベース・マネージャーは、指定された行数を判別したときに、照会の処理を停止します。 offset-row-count に定数を含む offset-clause も指定された場合、データベース・マネージャーは、処理を停止するタイミングを判別する際にこのオフセット値定数も考慮します。

行アクセス制御は副選択または全選択の許可 ID またはロールにアクセスできる行に影響するため、行アクセス制御は間接的に fetch-clause に影響します。 列アクセス制御は fetch-clause には影響しません。

注:

代替構文:
  • キーワード FIRST とキーワード NEXT は、同じ意味で使用されます。 結果は変わりません。ただし、offset-clause の使用時に、キーワード NEXT のほうが一般的に読みやすくなります。
  • キーワード ROW と ROWS は交換可能です。 どちらを使用しても同じ結果になりますが、1 以外の行数を指定する場合は一般に、ROWS のほうが読みやすくなります。
  • 他のデータベース製品で使用される SQL との互換性のために、以下の代替構文がサポートされています。 これらの代替は非標準であり、使用すべきではありません。
    代替構文 同等の構文
    LIMIT × FETCH FIRST x ROWS ONLY
    LIMIT x OFFS ET y オフセット y 行数次の x 行のみ取得
    制限 yx オフセット y 行数次の x 行のみ取得