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で位置づけておく必要があります。
-
FIND文
-
FETCH文
-
STORE文
(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"