Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Mengekstrak nilai dari xml clob dengan Namespace menggunakan Oracle pl/sql

XML Anda yang diperbarui memiliki namespace, yang akhirnya mengungkapkan masalahnya. Anda perlu menentukan namespace sebagai bagian dari ekstraksi XML , yang lebih sederhana dengan pendekatan XMLTable; dalam hal ini Anda bisa memperlakukannya sebagai namespace default:

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       

atau dengan 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                                                                             

Jika Anda ingin tetap menggunakan extractvalue() . yang sudah tidak digunakan lagi fungsi Anda dapat menyediakan namespace sebagai argumen untuk itu juga, sekali lagi seperti yang ditunjukkan pada dokumentasi :

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. Dalam satu kueri SQL, berapa banyak indeks yang dapat digunakan kueri dari satu tabel?

  2. Kondisi Bergabung Oracle dengan Top 1

  3. Presisi JOOQ Oracle Number dan pemetaan angka java

  4. Bagaimana menjalankan pemicu dan prosedur di oracle

  5. Tetapkan Pilih ke variabel dalam prosedur tersimpan