fetch-clause
fetch-clause は、取り出すことができる最大行数を設定します。
.-1---------------. >>-FETCH--+-FIRST-+--+-----------------+--+-ROW--+--ONLY------->< '-NEXT--' '-fetch-row-count-' '-ROWS-'
fetch-clause は、取り出すことができる最大行数を設定します。これは、中間結果表内の行数に関係なく、アプリケーションが最大 fetch-row-count 行までしか取得しないことを、データベース・マネージャーに認識させます。fetch-row-count 行を超えて取り出そうとすると、通常のデータの終わりと同様に処理されます。
fetch-clause は、ビューの最外部の全選択で指定することはできません。
取得する行の予測される集合を決定するには、中間結果表内の各行のソート順序を一意的に識別するソート・キーを使用した ORDER BY 文節の指定が必要です。 一部の行について重複するソート・キーが中間結果表に含まれると、行の順序は決定的ではありません。 ORDER BY 節がない場合、中間結果表の順序は確定されません。中間結果表の順序が決定的でないと、取得された行集合は予測不能になります。order-by-clause と fetch-clause の両方を指定すると、 fetch-clause は、順序付けされたデータで処理されます。
- fetch-row-count
- 取得する行の最大数を指定する式。 fetch-row-count に scalar-fullselect、列参照、表参照、ユーザー定義関数参照、および検査制約で制限と識別された組み込みスカラー関数を含めてはなりません。 check-constraint を参照してください。 式のデータ・タイプが BIGINT でない場合は、式の結果が BIGINT 値にキャストされます。 fetch-row-count の値は、正数またはゼロでなければなりません。 これを NULL 値にすることはできません。
結果表を指定の行数に限定することで、パフォーマンスが向上します。場合によっては、データベース・マネージャーは、指定された行数を判別したときに、照会の処理を停止します。offset-clause も指定された場合、 データベース・マネージャーは、処理を停止するタイミングを判別する際にこのオフセット値も考慮します。
全選択に FROM 節の SQL データ変更ステートメントが入っている場合は、 フェッチされる行の数の限度に関係なく、すべての行が変更されます。
行アクセス制御は副選択の許可 ID がアクセスできる行に影響するため、行アクセス制御は間接的に FETCH FIRST 節に影響する可能性があります。
注
代替構文:
- キーワード FIRST とキーワード NEXT は、同じ意味で使用されます。 結果は変わりませんが、offset-clause を使用する場合は、キーワード NEXT を使用したほうが読みやすくなります。
- 他のデータベース製品で使用される SQL との互換性のために、以下がサポートされています。これらの代替は非標準であり、使用すべきではありません。
代替構文 同等の構文 LIMIT x FETCH FIRST x ROWS ONLY LIMIT x OFFSET y OFFSET y ROWS FETCH FIRST x ROWS ONLY LIMIT y, x OFFSET y ROWS FETCH FIRST x ROWS ONLY
