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

例を使用してOracleでSOAPXMLを解析します

    XMLQUERYを使用してノードの内容を抽出できます :

    select xmlquery('declare namespace soapenv = "http://schemas.xmlsoap.org/soap/envelope/";
          declare namespace urn = "urn:ABC";
          /soapenv:Envelope/soapenv:Body/urn:settleResponse/settleReturn/message/text()'
        passing XMLType(message)
        returning content) as message,
      xmlquery('declare namespace soapenv = "http://schemas.xmlsoap.org/soap/envelope/";
          declare namespace urn = "urn:ABC";
          /soapenv:Envelope/soapenv:Body/urn:settleResponse/settleReturn/errorCode/text()'
        passing XMLType(message)
        returning content) as errorCode,
      xmlquery('declare namespace soapenv = "http://schemas.xmlsoap.org/soap/envelope/";
          declare namespace urn = "urn:ABC";
          /soapenv:Envelope/soapenv:Body/urn:settleResponse/settleReturn/status/text()'
        passing XMLType(message)
        returning content) as status
    from external;
    
    MESSAGE              ERRORCODE            STATUS   
    -------------------- -------------------- ----------
    Missing first name   INVALID_ACC          Failed
    

    または、おそらくもっと簡単に、特にXMLTABLEを使用して、処理するメッセージが複数ある場合は :

    select x.*
    from external ext
    cross join xmltable(
      xmlnamespaces('http://schemas.xmlsoap.org/soap/envelope/' as  "soapenv",
        'urn:ABC' as "urn"),
      '/soapenv:Envelope/soapenv:Body/urn:settleResponse/settleReturn'
      passing XMLType(ext.message)
      columns message varchar2(20) path 'message',
        errorCode varchar2(20) path 'errorCode',
        status varchar2(10) path 'status'
    ) x;
    
    MESSAGE              ERRORCODE            STATUS   
    -------------------- -------------------- ----------
    Missing first name   INVALID_ACC          Failed    
    

    どちらの場合も、名前空間を指定する必要があり、構文が異なります。 これらの関数の使用に関する詳細

    insert into some_table (x, y, z) select ...を使用して、それらを別のテーブルに直接挿入できます。 。




    1. InnotopをインストールしてMySQLサーバーのパフォーマンスを監視する

    2. MySQLdbモジュールのセットアップの問題

    3. 行ごとのNull変数の数をカウントしますmysql

    4. ORを使用したmysqlSELECTIFステートメント