4.4 FETCH行の取り出し

<この節の構成>
(1) 機能
(2) 形式
(3) 共通規則
(4) 注意事項
(5) 使用例

(1) 機能

取り出す行を示すカーソルの位置を次の行に進めます。

(2) 形式

FETCH文::=FETCH カーソル名 INTO :埋め込み変数〔:標識変数〕
                 〔,:埋め込み変数〔:標識変数〕〕…

(a) カーソル名

検索結果を取り出すカーソルのカーソル名を指定します。

(b) :埋め込み変数

ナル値以外の列の値を読み込むための埋め込み変数を指定します。

ナル値を含む列の値を受け取る場合は,埋め込み変数と標識変数の両方を指定します。

(c) :標識変数

標識変数を指定します。標識変数には,埋め込み変数に読み込まれる列の値がナル値かどうかを示す値が返されます。

(3) 共通規則

  1. FETCH文で指定するカーソルは,OPEN文で開いておいてください。
  2. 検索結果の列の個数(カーソル宣言に指定したSELECT文で指定した選択式の個数)と,FETCH文のINTO句で指定した埋め込み変数の個数は同じにしてください。列の個数と,埋め込み変数の個数が異なる場合は,SQL連絡領域のSQLWARN3領域に'W'(警告フラグ)が設定されます。
  3. INTO句で指定する埋め込み変数のデータ型およびデータ長は,対応する検索項目のデータ型およびデータ長と同じにしてください。
  4. 一つのカーソルに複数のFETCH文を記述する場合,FETCH文ごとに異なる埋め込み変数〔:標識変数〕を指定することはできません。
  5. 取り出す行がない場合,次の個所にリターンコード100が設定されます。
    • SQL連絡領域のSQLCODE領域
    • SQLCODE変数

(4) 注意事項

  1. 検索結果の列の値がナル値の場合は,対応する埋め込み変数の値は保証されません。
  2. カーソル名は,埋め込み変数名と同様に,コンパイル単位のモジュール内で有効な名前であり,同じカーソルに対する複数のSQLを,複数のモジュールにわたって使用できません。したがって,SQL中にカーソル名を指定している場合は,そのカーソル名をプリプロセスするUAPソース中で宣言する必要があります。

(5) 使用例

カーソル(CR1)による在庫表(ZAIKO)の検索結果を,商品コード列(SCODE),商品名列(SNAME),色列(COL),単価列(TANKA),在庫量列(ZSURYO)に対応する埋め込み変数および標識変数に読み込みます。

<埋め込み変数を指定した場合>

FETCH CR1
   INTO :XSCODE,:XSNAME,:XCOL,
        :XTANKA,:XZSURYO