ヘッダーをスキップ
Oracle Database PL/SQL言語リファレンス
11g リリース1(11.1)
E05670-03
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

FETCH文

FETCH文は、複数行の問合せの結果セットから、行データを取り出します。 一度に1行、複数の行、またはすべての行をフェッチできます。 データは問合せが選択した列に対応する変数またはフィールドに格納されます。

構文

fetch_statement ::=

fetch_statement
fetch_statement.gifの説明

into_clause ::=

into_clause
into_clause.gifの説明

bulk_collect_into_clause ::=

bulk_collect_into_clause
bulk_collect_into_clause.gifの説明

キーワードとパラメータの説明

BULK COLLECT INTO

コレクションをPL/SQLエンジンに戻す前にバルク・バインド出力するように、SQLエンジンに指示します。 SQLエンジンは、INTOリスト内で参照されるすべてのコレクションをバルク・バインドします。

collection_name

バルク・フェッチした列値を格納するための、宣言されたコレクションの名前。 問合せselect_itemごとに、リストの中に、対応する型互換のコレクションが存在している必要があります。

cursor_name

現行の有効範囲の中で宣言されている明示カーソルを識別します。

cursor_variable_name

現行の有効範囲の中で宣言されているPL/SQLカーソル変数(またはパラメータ)を識別します。

host_array_name

バルク・フェッチした列値を格納するための配列を識別します。この配列は、PL/SQLホスト環境で宣言され、バインド引数としてPL/SQLに渡されます。 問合せselect_itemごとに、リストの中に、対応する型互換の配列が存在している必要があります。

host_cursor_variable_name

PL/SQLホスト環境で宣言され、バインド引数としてPL/SQLに渡されるカーソル変数を識別します。 ホスト・カーソル変数のデータ型は、PL/SQLカーソル変数の戻り型と互換性があります。

LIMIT

バルク(スカラーではない)FETCH文の中でのみ許されるオプションの句です。結果セット全体ではなく、一度にいくつかの行をバルク・フェッチします。

record_name

フェッチした行の値を格納する、ユーザー定義のレコードまたは%ROWTYPEレコードを識別します。 カーソルまたはカーソル変数に関連付けられた問合せが戻す列の値に対して、レコードの中に、対応する型互換のフィールドが存在している必要があります。

variable_name

フェッチした列値を格納するための変数を識別します。 カーソルまたはカーソル変数に関連付けられた問合せが戻す列の値に対して、リストの中に、対応する型互換の変数が存在している必要があります。

使用上の注意

複数行の問合せを処理するには、カーソルFORループかFETCH文を使用します。

問合せのWHERE句に含まれる変数は、カーソルまたはカーソル変数がオープンされたときにのみ評価されます。 結果セットや問合せの中の変数の値を変更するには、カーソルまたはカーソル変数を、新しい値に設定して再オープンする必要があります。

カーソルを再オープンするには、まずクローズしてください。 ただし、カーソル変数を再オープンする場合には、その前にクローズする必要はありません。

同じカーソルまたはカーソル変数を使用した別のフェッチで、異なるINTOリストを使用できます。 個のFETCH文で別の行を取り出し、ターゲット変数に値を代入します。

結果セットの中に行が残っていない状態でFETCH文を実行すると、ターゲット・フィールドの値またはターゲット変数の値は予測不能となり、%NOTFOUND属性はTRUEを戻します。

PL/SQLでは、カーソル変数の戻り型が、必ずFETCH文のINTO句と互換性を持ちます。 カーソル変数に関連付けられた問合せが戻す列の値に対して、INTO句の中に、対応する、型互換性のあるフィールドまたは変数が存在している必要があります。 また、フィールドまたは変数の数は、列の値の数と一致する必要があります。

カーソル変数を、そのカーソル変数からフェッチするサブプログラムの仮パラメータとして宣言する場合は、INまたはIN OUTモードを指定する必要があります。 ただし、サブプログラムがカーソル変数もオープンする場合は、IN OUTモードを指定する必要があります。

一連のFETCH文では取り出すデータが常に不足するため、FETCHがデータを戻さない場合でも例外は呼び出されません。 この状態を検出するには、カーソル属性%FOUNDまたは%NOTFOUNDを使用する必要があります。

クローズしている、または一度もオープンされていないカーソルまたはカーソル変数からフェッチを実行すると、PL/SQLによって事前定義の例外INVALID_CURSORが呼び出されます。

BULK COLLECT INTOの制限

BULK COLLECT INTO句には、次の制限が適用されます。

関連トピック