sql >> データベース >  >> RDS >> Oracle

Oracle PL / SQLで単純なXMLスニペットを解析し、それをグローバル一時表にロードするにはどうすればよいですか。

    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>
    



    1. MySQLの自動インクリメントID(再)を1から開始する

    2. 高度なSQL:T-SQL挿入ステートメントのバリエーションとさまざまなユースケース

    3. #1066-一意ではないテーブル/エイリアス:

    4. py.testが静かにハングした場合はどうすればよいですか?