Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Wie analysieren Sie ein einfaches XML-Snippet in Oracle PL/SQL und laden es in eine globale temporäre Tabelle?

Die XML-DB-Implementierung von Oracle hat eine ehrlich gesagt verwirrende Anzahl von Optionen, und es ist (zumindest für mich) nicht immer klar, welche in einem bestimmten Szenario zutrifft. In diesem speziellen Fall möchten Sie XMLTable() , wodurch eine XQuery in eine Reihe von Zeilen umgewandelt wird.

Zuerst erstellen wir eine Tabelle.

SQL> create table t23
  2      (field01 number
  3       , field02 number
  4       , field03 char(1)
  5       )
  6  /

Table created.

SQL>

Dann füllen wir es ...

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>

Endlich beweisen wir, dass es funktioniert hat....

SQL> select * from t23
  2  /

   FIELD01    FIELD02 F
---------- ---------- -
       130       1700 C
       131       1701 C
       132       1702 C

SQL>