2014-10-17 4 views
0

Я работаю над проектом, где мне нужно написать хранимую процедуру, которая извлекает данные из службы HTTP, XML. данные должны быть возвращены в таблице или курсоре, чтобы клиенты могли ее прочитать. Я уже проделал некоторую работу по извлечению данных из службы с помощью UTL_HTTP. То, что я не знаю, как это сделать, - это преобразовать эти данные из XML в столбцы и строки. Я искал в Интернете и нашел много примеров при запросе таблицы данных Oracle и возвращении XML с помощью XMLElement; но не в другую сторону. Спасибо!Извлечение XML в таблицу Oracle

+0

Что вы ищете, это 'XMLTABLE()', например. http://stackoverflow.com/questions/9321391/xmltable-with-oracle-11g – mustaccio

ответ

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; 

Я знаю EXTRACTVALUE устарела в Oracle 11.2, но я просто хочу, чтобы проиллюстрировать этот принцип.

Другой способ - сохранить весь XML-документ в таблицу (простой оператор INSERT), где вы создали столбец типа данных XMLTYPE. Затем вы создаете представление в этой таблице, используя функции, которые вы уже нашли при поиске. С помощью INSTEAD OF TRIGGER можно также обновить XML-документ, хранящийся в таблице.

Смежные вопросы