将XML检索到Oracle表中

时间:2014-10-17 17:24:51

标签: xml oracle stored-procedures

我正在开发一个项目,我必须编写一个存储过程,从HTTP,XML服务中检索数据。数据需要在表或游标中返回,以便客户端可以读取它。我已经做了一些工作,已经使用UTL_HTTP从服务中检索数据。我不知道该怎么做是将数据从XML转换为列和行。我一直在网上搜索并找到很多关于查询Oracle数据表并使用XMLElement返回XML的示例;但不是另一种方式。 谢谢!

1 个答案:

答案 0 :(得分:1)

有几种方法可以做到这一点。

一种方法是编写一个解析器(可能使用不同的语言,如Perl或Java),将XML转换为INSERT语句。

在PL / SQL中,它看起来像这样:

your_xml := XMLType('<emp Id="1"><first>Peter</first><last>Fox</last></emp>');

insert into emp (empid, first_name, last_name)
select EXTRACTVALUE(your_xml, '/@Id'), EXTRACTVALUE(your_xml, '/first'), EXTRACTVALUE(your_xml, '/last') 
from dual;

我知道在Oracle 11.2中已经弃用EXTRACTVALUE但我只是想说明这个原则。

另一种方法是将整个XML文档保存到一个表(简单的INSERT语句)中,在该表中创建了一个数据类型为XMLTYPE的列。然后使用搜索时找到的函数在此表上创建视图。使用INSTEAD OF TRIGGER,还可以更新存储在表中的XML文档。