讀取XMLTYPE 類型數據

select comp_name from dba_registry where comp_name like '%XML%';

--this directory is relative to client. From the server side, it can't find the path
create or replace directory XMLDIR as 'D:/oracle_new_feature/xml/XMLDIR';

grant xdbadmin to scott;

--insert two xml
create table invoiceXML_col(inv_id number primary key, inv_doc XMLTYPE);
insert into invoiceXML_col
values
  (1,
   XMLTYPE(bfilename('XMLDIR', 'invoicexml.txt'),
           nls_charset_id('AL32UTF8')));

create table orderXML_col of xmltype;
insert into orderXML_col
values
  (XMLTYPE(bfilename('XMLDIR', 'orderxml.txt'), nls_charset_id('AL32UTF8')));
  insert into orderXML_col
values
  (XMLTYPE(bfilename('XMLDIR', 'orderxml1.txt'), nls_charset_id('AL32UTF8')));
  insert into orderXML_col
values
  (XMLTYPE(bfilename('XMLDIR', 'orderxml2.txt'), nls_charset_id('AL32UTF8')));
--query clob data
select inv_id, t.inv_doc.getclobval() inv_doc from invoicexml_col t;

--query grp_order_no
select value(l).extract('/invoice/@grp_order_no').getNumberVal() from invoicexml_col x,table(xmlsequence(extract(x.inv_doc,'/invoices/invoice'))) l;
select extractvalue(value(l),'/invoice/@grp_order_no') from invoicexml_col x,table(xmlsequence(extract(x.inv_doc,'/invoices/invoice'))) l;

--get the text
select value(l).extract('/invoice/text()').getNumberVal() from invoicexml_col x,table(xmlsequence(extract(x.inv_doc,'/invoices/invoice'))) l;

--get the big clob
select value(l).getclobval() from invoicexml_col x,table(xmlsequence(extract(x.inv_doc,'/invoices/invoice'))) l;
select value(l).getStringval() from invoicexml_col x,table(xmlsequence(extract(x.inv_doc,'/invoices/invoice'))) l;

select extractvalue(l.column_value,'/invoice/@grp_order_no') grp_order_no
from invoicexml_col x,table(xmlsequence(extract(x.inv_doc,'/invoices/invoice'))) l;

--there are some silent difference between xml table with xml column in table.
select o.object_value.getclobval() from orderXML_col o ;
select value(l).extract('/order/@order_no').getnumberval() from orderXML_col o, table(xmlsequence(extract(o.object_value,'/orders/order'))) l ;
select extractvalue(value(l),'/order/@order_no') from orderXML_col o, table(xmlsequence(extract(o.object_value,'/orders/order'))) l ;

select extractvalue(value(l),'/order/@order_no') from orderXML_col o, table(xmlsequence(extract(o.object_value,'/orders/order'))) l
where existsNode(o.object_value,'/orders[order=501]')=1;

select o.object_value.getClobval() from orderxml_col o
where existsNode(o.object_value,'/orders[order=501]')=1;

發佈了56 篇原創文章 · 獲贊 0 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章