Việc triển khai XML DB của Oracle có một số tùy chọn thực sự gây hoang mang và không phải lúc nào cũng rõ ràng (ít nhất là đối với tôi) cái nào áp dụng trong bất kỳ tình huống nhất định nào. Trong trường hợp cụ thể này, cái bạn muốn là XMLTable () , biến một XQuery thành một tập hợp các hàng.
Đầu tiên, chúng tôi tạo một bảng.
SQL> create table t23
2 (field01 number
3 , field02 number
4 , field03 char(1)
5 )
6 /
Table created.
SQL>
Sau đó, chúng tôi điền nó ...
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>
Cuối cùng, chúng tôi chứng minh nó hoạt động ....
SQL> select * from t23
2 /
FIELD01 FIELD02 F
---------- ---------- -
130 1700 C
131 1701 C
132 1702 C
SQL>