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

Trích xuất giá trị từ xml clob với Không gian tên bằng Oracle pl / sql

XML đã cập nhật của bạn có một không gian tên, vùng này cuối cùng cũng tiết lộ vấn đề. Bạn cần chỉ định không gian tên như một phần của quá trình trích xuất XML , đơn giản hơn với cách tiếp cận XMLTable; trong trường hợp này, bạn chỉ có thể coi nó là không gian tên mặc định:

select itc.element_name, x.user_classification3
from i_transaction itc
cross join xmltable(
  xmlnamespaces(default 'http://xmlns.oracle.com/apps/otm'),
    '/TenderOffer/Shipment/RATE_OFFERING/RATE_OFFERING_ROW'
  passing xmltype(itc.xml_blob)
  columns user_classification3 varchar2(10) path 'USER_CLASSIFICATION3'
) x
where itc.i_transaction_no = 31553115
and rownum = 1;

ELEMENT_NA USER_CLASS
---------- ----------
dummy      ZXF       

hoặc với XMLQuery:

select itc.element_name, xmlquery(
  'declare default element namespace "http://xmlns.oracle.com/apps/otm"; (: :)
    /TenderOffer/Shipment/RATE_OFFERING/RATE_OFFERING_ROW/USER_CLASSIFICATION3/text()'
  passing xmltype(itc.xml_blob)
  returning content
) x
from i_transaction itc
where itc.i_transaction_no = 31553115
and rownum = 1;

ELEMENT_NA X                                                                               
---------- --------------------------------------------------------------------------------
dummy      ZXF                                                                             

Nếu bạn muốn tiếp tục sử dụng extractvalue() không dùng nữa bạn cũng có thể cung cấp không gian tên làm đối số cho nó, một lần nữa như được hiển thị trong tài liệu :

select itc.element_name,
  extractvalue(xmltype(xml_blob),
    '/TenderOffer/Shipment/RATE_OFFERING/RATE_OFFERING_ROW/USER_CLASSIFICATION3/text()',
    'xmlns="http://xmlns.oracle.com/apps/otm"')
from i_transaction itc where itc.i_transaction_no = 31553115 and rownum = 1;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sử dụng PL / SQL làm cách nào để tôi đưa nội dung của tệp vào một đốm màu?

  2. Chỉ mục phân vùng Oracle

  3. SQLT và phân vùng

  4. cd:-M:tùy chọn không hợp lệ

  5. OracleException (0x80004005) Khi kết nối với cơ sở dữ liệu Oracle