ネストした表および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フィールドのフィールド名、特に、列オブジェクトのフィールド名の記述と同じです。