Oracle
 sql >> база данни >  >> RDS >> Oracle

Анализирайте SOAP XML в Oracle с пример

Можете да извлечете съдържанието на възела с 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да форматирате красиво отпечатването на SQL заявки в SQLAlchemy?

  2. EF заявка към Oracle хвърля ORA-12704:несъответствие на набора от знаци

  3. Как да извлечете низ между скоби в Oracle sql заявка

  4. CLOB стойност при изход/връщане от plsql (посочен невалиден LOB локатор:ORA-22275)

  5. Проблем с хибернация с Oracle Trigger за генериране на идентификатор от последователност