Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Phân tích cú pháp XML SOAP trong Oracle với ví dụ

Bạn có thể trích xuất nội dung nút bằng 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

Hoặc có lẽ đơn giản hơn, đặc biệt nếu bạn có nhiều thư cần xử lý, với 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    

Trong cả hai trường hợp, bạn cần chỉ định không gian tên và cú pháp là khác nhau. Đọc thêm về cách sử dụng các chức năng này .

Bạn có thể chèn chúng trực tiếp vào một bảng khác bằng 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. Cách sử dụng Oracle PL / SQL để tạo mười bảng tương tự từ một bảng nguồn Oracle nhất định

  2. Các vấn đề về khả năng tương thích của H2 và Oracle

  3. Lập bản đồ Hibernate - Nối hai bảng với một bảng liên kết - Nhưng có sự thay đổi

  4. Oracle apex select danh sách và ẩn các giá trị

  5. Tôi muốn truyền một đối số biến vào tệp SQL bên ngoài (PL / SQL với SQL * Plus)