OracleのXMLDB実装には、率直に言って途方もない数のオプションがあり、特定のシナリオにどれが適用されるかは(少なくとも私には)常に明確であるとは限りません。この特定のケースでは、必要なのはXMLTable() 、XQueryを一連の行に変換します。
まず、テーブルを作成します。
SQL> create table t23
2 (field01 number
3 , field02 number
4 , field03 char(1)
5 )
6 /
Table created.
SQL>
次に、データを入力します...
SQL> declare
2 x varchar2(2000) := '<ArrayOfRecords>
3 <Record Field01="130" Field02="1700" Field03="C" />
4 <Record Field01="131" Field02="1701" Field03="C" />
5 <Record Field01="132" Field02="1702" Field03="C" />
6 </ArrayOfRecords>';
7 begin
8 insert into t23
9 select *
10 from xmltable
11 ( '/ArrayOfRecords/Record'
12 passing xmltype (x)
13 columns f1 number path '@Field01'
14 , f2 number path '@Field02'
15 , f3 char(1) path '@Field03'
16 )
17 ;
18 end;
19 /
PL/SQL procedure successfully completed.
SQL>
最後に、それが機能したことを証明します....
SQL> select * from t23
2 /
FIELD01 FIELD02 F
---------- ---------- -
130 1700 C
131 1701 C
132 1702 C
SQL>