Hitachi

ノンストップデータベース HiRDB Version 10 UAP開発ガイド


2.12.3 ユーザが定義する抽象データ型の場合

ここでは,ユーザが定義する抽象データ型を含む表を操作する例について説明します。

なお,例題で使用している表は,マニュアル「HiRDB システム導入・設計ガイド」のデータベースの作成(ユーザが定義する抽象データ型を含む表の場合)で定義している表を利用しています。

〈この項の構成〉

(1) 抽象データ型がある表の検索

抽象データ型がある表の検索例として,勤続年数が20年以上の社員を求める例を次の図に示します。検索をするSQL文は,次のように記述できます。

  SELECT 社員番号
      FROM 社員表
      WHERE 勤続年数(従業員)>=20
[説明]

この例では,ユーザ定義関数「勤続年数」を使用して,勤続年数が20年以上の社員の社員番号を検索しています。ユーザ定義関数「勤続年数」の引数は,従業員です。

図2‒56 抽象データ型がある表の検索例

[図データ]

(2) 抽象データ型がある表の更新

抽象データ型がある表の更新例として,社員番号が900123の社員の役職を主任に更新する例を次の図に示します。更新をするSQL文は,次のように記述できます。

  UPDATE 社員表
      SET 従業員..役職='主任'
      WHERE 社員番号='900123'
[説明]

この例では,社員番号が900123の社員の,列「従業員」の属性「役職」を主任に更新しています。抽象データ型の属性を指定する場合は,コンポネント指定を使用します。この例の場合,従業員..役職がコンポネント指定です。

図2‒57 抽象データ型がある表の更新例

[図データ]

(3) 抽象データ型がある表の行の削除

抽象データ型がある表の行の削除例として,役職が一般の社員のデータを削除する例を次の図に示します。行を削除するSQL文は,次のように記述できます。

  DELETE FROM 社員表
      WHERE 従業員..役職='一般'
[説明]

この例では,列「従業員」の属性「役職」が一般の社員の行を削除しています。抽象データ型の属性を指定する場合は,コンポネント指定を使用します。この例の場合,従業員..役職がコンポネント指定です。

図2‒58 抽象データ型がある表の行の削除例

[図データ]

(4) 抽象データ型がある表への行の挿入

抽象データ型がある表への行の挿入例として,社員表に行を挿入する例を次の図に示します。行を挿入するSQL文は,次のように記述できます。

  INSERT INTO 社員表
      VALUES ('950070',t_従業員('タシロケイコ',
                                'F',
                                '一般',
                                '1995-04-01',
                                :x顔写真 AS BLOB,
                                140000
                                )
              )
[説明]

この例では,抽象データ型定義時に定義したコンストラクタ関数t_従業員を使用して,社員表に社員番号950070の行を挿入しています。

なお,:x顔写真はBLOB型の埋込み変数で,顔写真の画像が設定されているものとします。

図2‒59 抽象データ型がある表への行の挿入例

[図データ]