sql >> Database >  >> RDS >> Oracle

Hoe parseer je een eenvoudig XML-fragment in Oracle PL/SQL en laad je het in een globale tijdelijke tabel?

De XML DB-implementatie van Oracle heeft een ronduit verbijsterend aantal opties, en het is niet altijd duidelijk (althans voor mij) welke in een bepaald scenario van toepassing is. In dit specifieke geval is degene die je zoekt de titel XMLTable() , die een XQuery verandert in een reeks rijen.

Eerst maken we een tabel.

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

Table created.

SQL>

Dan vullen we het in ...

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>

Eindelijk bewijzen we dat het werkte....

SQL> select * from t23
  2  /

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

SQL>



  1. Select &Insert in meerdere databases met MySQL

  2. Oracle-tabel maken met automatische vastlegging aan

  3. Hoe moet ik een SQL-instructie schrijven met voorwaardelijke vermenigvuldiging?

  4. Index toevoegen aan grote tafel duurt een eeuwigheid