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

Làm cách nào để bạn phân tích cú pháp một đoạn mã XML đơn giản trong Oracle PL / SQL và tải nó vào một bảng tạm thời chung?

Việc triển khai XML DB của Oracle có một số tùy chọn thực sự gây hoang mang và không phải lúc nào cũng rõ ràng (ít nhất là đối với tôi) cái nào áp dụng trong bất kỳ tình huống nhất định nào. Trong trường hợp cụ thể này, cái bạn muốn là XMLTable () , biến một XQuery thành một tập hợp các hàng.

Đầu tiên, chúng tôi tạo một bảng.

SQL> create table t23
  2      (field01 number
  3       , field02 number
  4       , field03 char(1)
  5       )
  6  /

Table created.

SQL>

Sau đó, chúng tôi điền nó ...

SQL> declare
  2      x varchar2(2000) := '<ArrayOfRecords>
  3                        <Record Field01="130" Field02="1700" Field03="C" />
  4                        <Record Field01="131" Field02="1701" Field03="C" />
  5                        <Record Field01="132" Field02="1702" Field03="C" />
  6                   </ArrayOfRecords>';
  7  begin
  8      insert into t23
  9      select *
 10      from xmltable
 11          ( '/ArrayOfRecords/Record'
 12             passing xmltype (x)
 13             columns f1 number path '@Field01'
 14                     , f2 number path '@Field02'
 15                     , f3 char(1) path '@Field03'
 16          )
 17      ;
 18  end;
 19  /

PL/SQL procedure successfully completed.

SQL>

Cuối cùng, chúng tôi chứng minh nó hoạt động ....

SQL> select * from t23
  2  /

   FIELD01    FIELD02 F
---------- ---------- -
       130       1700 C
       131       1701 C
       132       1702 C

SQL>



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle / SQL:Tại sao truy vấn SELECT * FROM các bản ghi WHERE rownum> =5 VÀ rownum <=10 - trả về 0 hàng

  2. Oracle SQL để sắp xếp số phiên bản

  3. Làm thế nào để chuyển đổi Hàng thành Cột trong Oracle?

  4. ResultSetMetaData getScale trả về 0

  5. Trình tự Oracle không tạo ra số liên tục