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

Từ XML đến danh sách các đường dẫn trong môi trường Oracle PL / SQL

Bạn có thể sử dụng XMLTable để tạo danh sách các đường dẫn với XQuery.

Ví dụ.

( SQLFiddle )

with params as (
  select 
    xmltype('
      <ALFA>
        <BETA>0123</BETA>
        <GAMMA>2345</GAMMA>
        <DELTA>
           <EPSILON>3</EPSILON>
        </DELTA>
      </ALFA>
    ') p_xml
  from dual  
)    
select
  path_name || '/text()'
from
  XMLTable(
    '
      for $i in $doc/descendant-or-self::*
        return <element_path> {$i/string-join(ancestor-or-self::*/name(.), ''/'')} </element_path>
    '
    passing (select p_xml from params) as "doc"
    columns path_name varchar2(4000) path '//element_path'
  )

nhưng đó là một cách sai ít nhất vì nó không hiệu quả như nó có thể.

Chỉ cần trích xuất tất cả các giá trị có cùng XQuery :( SQLFiddle )

with params as (
  select 
    xmltype('
      <ALFA>
        <BETA>0123</BETA>
        <GAMMA>2345</GAMMA>
        <DELTA>
           <EPSILON>3</EPSILON>
        </DELTA>
      </ALFA>
    ') p_xml
  from dual  
)    
select
  element_path, element_text
from
  XMLTable(
    '              
      for $i in $doc/descendant-or-self::*
        return <element>
                 <element_path> {$i/string-join(ancestor-or-self::*/name(.), ''/'')} </element_path>
                 <element_content> {$i/text()}</element_content>
               </element>  
    '
    passing (select p_xml from params) as "doc"
    columns 
      element_path   varchar2(4000) path '//element_path',
      element_text   varchar2(4000) path '//element_content'
  )



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để gỡ cài đặt / gỡ bỏ hoàn toàn Oracle 11g (máy khách)?

  2. Tạo tập lệnh SQL * Plus bằng SQL * Plus

  3. Cách tốt nhất để xử lý LOB trong cơ sở dữ liệu phân tán Oracle

  4. Hàm INSTR () trong Oracle

  5. CURSOR và REF CURSOR dưới dạng kiểu dữ liệu JDBC