读取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;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值