Hitachi

ノンストップデータベース HiRDB Version 10 構造型データベース機能


17.4.2 FETCH文

〈この項の構成〉

(1) 機能

レコードを検索して,レコード実現値を取得します。また,検索したレコードに対して位置づけを行います。

検索には,次の2つがあります。

検索は順序,開始位置,および検索方向を決定してレコードを検索します。詳細については,「17.3.3 検索の順序,開始位置および方向」を参照してください。

(2) 形式

(a) UAPに記述するFETCH文

FETCH
    〔FOR UPDATE〕
    {FIRST|NEXT|LAST|PRIOR}
      レコード名
      INTO :埋込み変数
     〔WITHIN 親子集合型名〕
     〔WHERE (探索条件)〕

(b) DMLコマンドで記述するFETCH文

FETCH
    〔FOR UPDATE〕
    {FIRST|NEXT|LAST|PRIOR}
      レコード名
     〔WITHIN OWNER〕
     〔WHERE (探索条件)〕

(3) オペランドの説明

FOR UPDATE

検索したレコードを更新(ERASE,MODIFY)するかどうかを指定します。

検索したレコードを更新する場合は,FOR UPDATEを指定してください。

検索したレコードを更新しない場合は,FOR UPDATEを省略してください。

●{FIRST|NEXT|LAST|PRIOR}

検索の開始位置となるレコードと,検索の方向を示す指示コードを指定します。

FIRST:先頭から順方向に検索します。

NEXT:位置づけされているレコードから順方向に検索します。

LAST:最後から逆順方向に検索します。

PRIOR:位置づけされているレコードから逆順方向に検索します。

LASTおよびPRIORは親子集合型内の検索のときだけ指定できます。

検索の開始位置,方向については,「17.3.3 検索の順序,開始位置および方向」を参照してください。

●レコード名

〜<識別子>((1〜30バイト))

検索対象のレコード名を指定します。

注意事項
  • レコード名に英小文字を使用している場合は,レコード名を引用符(")で囲んでください。引用符で囲まないと,英小文字は英大文字と見なされます。

  • レコード名に空白またはハイフン(-)を使用している場合は,レコード名を引用符(")で囲んでください。

●INTO :埋込み変数

検索したレコード実現値を読み込むための埋込み変数を指定します。

埋込み変数の宣言方法については,マニュアル「HiRDB 構造型データベース機能(UAP開発編)」の「UAPの作成」の「埋込み変数の宣言」を参照してください。

WITHIN 親子集合型名

〜<識別子>((1〜30バイト))

親子集合型内の検索を行う場合に指定します。

検索対象とする親子集合の親子集合型名を指定します。

注意事項
  • 親子集合型名に英小文字を使用している場合は,親子集合型名を引用符(")で囲んでください。引用符で囲まないと,英小文字は英大文字と見なされます。

  • 親子集合型名に空白またはハイフン(-)を使用している場合は,親子集合型名を引用符(")で囲んでください。

●WITHIN OWNER

親子集合型内の検索を行う場合に指定します。

●WHERE (探索条件)

検索するレコードの条件を指定します。探索条件が真になるレコードが検索対象になります。探索条件は,レコード型内の検索の際に指定できます。

探索条件については,「17.3.1 探索条件の指定」を参照してください。

(4) 共通規則

(5) 使用例

例1

ルートレコードRECAをレコード型内の検索で検索します。

条件値に埋込み変数を指定します。

FETCH FOR UPDATE FIRST "RECA" INTO :WRECA
    WHERE("KEYDATA"=:WKEYDATA)
例2

ルートレコードRECAをレコード型内の検索で検索します。

条件値に構成要素に対応する値を指定します。

FETCH FOR UPDATE FIRST "RECA" INTO :WRECA
    WHERE("KEYDATA"='0001')
例3

ルートレコードRECAをレコード型内の検索で検索します。

条件値に構成要素に対応する値を複数指定します。

FETCH FOR UPDATE FIRST "RECA" INTO :WRECA
    WHERE("KEYDATA"=('FS','aa'))
例4

子レコードCHILD_RECBを親子集合型内の検索で検索します。

FETCH FOR UPDATE FIRST "CHILD_RECB" INTO :WCHILD_RECB
    WITHIN "SET_AB"
例5

子レコードCHILD_RECBをレコード型内の検索で検索します。

FETCH FOR UPDATE FIRST "CHILD_RECB" INTO :WCHILD_RECB
例6

DMLコマンドでルートレコードRECAをレコード型内の検索で検索します。

FETCH FOR UPDATE FIRST "RECA" 
    WHERE("KEYDATA"='0001')
例7

DMLコマンドで子レコードCHILD_RECBを親子集合型内の検索で検索します。

FETCH FOR UPDATE FIRST "CHILD_RECB" 
    WITHIN OWNER
例8

DMLコマンドで子レコードCHILD_RECBをレコード型内の検索で検索します。

FETCH FOR UPDATE FIRST "CHILD_RECB"