Hitachi

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


17.4.2 FETCH文

〈この項の構成〉

(1) 機能

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

(2) 形式

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

(3) オペランドの説明

FOR UPDATE

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

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

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

●{FIRST|NEXT|LAST|PRIOR}

検索の基点となるレコードと,検索の方向を示す指示コードを指定します。

  • レコード名にルートレコードを指定した場合

    表17‒4 検索の基点となるレコードと検索の方向(ルートレコード)

    指示コード

    基点となるレコード

    検索方向

    FIRST

    ルートレコードのデータベースキーの最小値を持つレコード

    キー値の昇順

    NEXT

    位置づけされているルートレコードのデータベースキー値の,次のキー値を持つレコード

    • 位置指示子が空値の場合は,ルートレコードのデータベースキーの最小値を持つレコード

    キー値の昇順

    LAST

    指定できません。

    該当しません。

    PRIOR

    指定できません。

    該当しません。

  • レコード名に子レコードを指定した場合

    表17‒5 検索の基点となるレコードと検索の方向(子レコード)

    指示コード

    基点となるレコード

    検索方向

    FIRST

    親レコードのFIRSTポインタが指すレコード

    NEXTポインタの順

    NEXT

    位置指示子に位置づけされているレコードのNEXTポインタが指すレコード

    位置指示子が空値の場合は,親レコードのFIRSTポインタが指すレコード

    NEXTポインタの順

    LAST

    親レコードのLAST ポインタが指すレコード

    PRIORポインタの順

    PRIOR

    位置指示子に位置づけされているレコードのPRIORポインタが指すレコード

    位置指示子が空値の場合は,親レコードのLASTポインタが指すレコード

    PRIORポインタの順

●レコード名

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

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

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

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

●INTO :埋込み変数

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

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

WITHIN親子集合型名

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

検索対象とする親子集合の親子集合型名を指定します。検索対象のレコードが子レコードの場合に指定してください。

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

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

●WHERE キーの条件

検索条件を指定します。検索条件は,検索対象がルートレコードの場合に指定できます。

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

(4) 共通規則

子レコードを検索する場合,検索対象のレコードの親レコードまでを次のどれかのDMLで位置づけておく必要があります。

(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"