用途
選択リストの値をホスト変数に割り当てて、問合せが戻した1つまたは複数の行を取り出します。ANSI動的SQL方法4で使用します。
前提条件
OPEN文を使用してカーソルを先にオープンしておく必要があります。
構文
キーワードおよびパラメータ
使用上の注意
出力ホスト変数のサイズは取り出された行数を示し、FOR句は値を示します。データを取得するホスト変数は、すべてがスカラーか、あるいはすべてが配列であることが必要です。スカラーの場合は、Oracleは1行のみフェッチします。配列の場合、Oracleは配列を満たすのに十分な数の行をフェッチします。
配列ホスト変数は、サイズが異なってもかまいません。この場合、Oracleがフェッチする行数は、次の値のうち小さい方です。
最小の配列のサイズ
オプションのFOR句の:array_sizeの値
フェッチする行数は、実際に問合せを満たす行数によってさらに限定できます。
FETCH文が、問合せで戻された行すべてを取得しなかった場合、カーソルは戻された次の行に配置されます。問合せで戻された最後の行を取得すると、次のFETCH文を実行すると、SQLCAのSQLCODE要素にエラー・コードが戻されることになります。
FETCH文にはAT句は含まれません。カーソルによってアクセスされるデータベースは、DECLARE CURSOR文で指定する必要があります。
FETCH文では、アクティブ・セット内を前方向にのみ進めます。すでにフェッチした行に戻る場合は、カーソルを再オープンして各行を順番に取り出す必要があります。アクティブ・セットを変更するには、新しい値をカーソルの問合せの入力ホスト変数に割り当て、カーソルを再オープンします。
ANSI SQL方法4アプリケーション用にDYNAMIC=ANSIプリコンパイラ・オプションを使用してください。ANSI SQL方法4アプリケーションの詳細は、FETCHを参照してください。
例
... EXEC SQL ALLOCATE DESCRIPTOR 'output_descriptor' ; ... EXEC SQL PREPARE S FROM :dyn_statement ; EXEC SQL DECLARE mycursor CURSOR FOR S ; ... EXEC SQL FETCH mycursor INTO DESCRIPTOR 'output_descriptor' ; ...
関連項目