ネストした表およびVARRAYには次の制限事項があります。
field_listには、collection_fld_specを含めることはできません。
VARRAY内にネストしたcol_obj_specには、collection_fld_specを含めることはできません。
field_listの一部として指定したcolumn_nameは、VARRAYパラメータを前に付けたcolumn_nameと同一である必要があります。
また、ネストした表を含む表にロードする場合、複数のロードへの細分化およびSIDの生成は自動的に行われないため注意してください。
例11-24に、VARRAYおよびネストした表のロード例を示します。
例11-24 VARRAYおよびネストした表のロード
制御ファイルの内容
LOAD DATA
INFILE 'sample.dat' "str '\n' "
INTO TABLE dept
REPLACE
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
(
dept_no CHAR(3),
dname CHAR(25) NULLIF dname=BLANKS,
1 emps VARRAY TERMINATED BY ':'
(
emps COLUMN OBJECT
(
name CHAR(30),
age INTEGER EXTERNAL(3),
2 emp_id CHAR(7) NULLIF emps.emps.emp_id=BLANKS
)
),
3 proj_cnt FILLER CHAR(3),
4 projects NESTED TABLE SDF (CONSTANT "pr.txt" "fix 57") COUNT (proj_cnt)
(
projects COLUMN OBJECT
(
project_id POSITION (1:5) INTEGER EXTERNAL(5),
project_name POSITION (7:30) CHAR
NULLIF projects.projects.project_name = BLANKS
)
)
)
データ・ファイル(sample.dat)
101,MATH,"Napier",28,2828,"Euclid", 123,9999:0 210,"Topological Transforms",:2
セカンダリ・データ・ファイル(SDF)(pr.txt)
21034 Topological Transforms 77777 Impossible Proof
注意:
例の左に付けた太字の数字は、次の注意事項と対応しています。
TERMINATED BY句では、VARRAYのインスタンス終了記号(COUNT句は使用されていないことに注意)を指定します。
このFILLERフィールドの存在によって発生するフィールド名の競合は、フルネームによるフィールド参照(ドット表記法を使用)によって解決されます。
proj_cntは、COUNT句に対する引数として使用するFILLERフィールドです。
pr.txtと呼ばれるSDFをデータのソースとして指定します。また、SDF内で固定レコード形式を指定します。
COUNT句が0の場合、コレクションは空に初期化されます。コレクションを空に初期化するもう1つの方法は、DEFAULTIF句を使用する方法です。ネストした表のフィールドの記述に対応するメイン・フィールド名は、そのネストした非FILLERフィールドのフィールド名、特に、列オブジェクトのフィールド名の記述と同じです。