Экспорт данных таблицы Oracle с помощью DBMS_XMLGEN -> Как импортировать? - PullRequest
1 голос
/ 01 декабря 2010

Я могу легко экспортировать данные таблицы, используя DBMS_XMLGEN. Но есть ли пакет для повторного импорта этого XML?

create table foo(
  id number
 ,text varchar2(30)
)
/

insert into foo values (1,'hello');
insert into foo values (2,'world');

declare
  l_foo_xml Clob;
begin
  l_foo_xml := DBMS_XMLGEN.GETXML('select * from foo');
  delete from foo;
  --- ???? insert the xml into foo ???
end;
/

Спасибо Christian

1 Ответ

2 голосов
/ 01 декабря 2010

Вы смотрели на DBMS_XMLSAVE ?

Документация Oracle не дает примеров его использования, поэтому быстрый Google покажет вам.

Вот кое-что, основанное на вашем примере. (Который был вдохновлен информацией от здесь )

create table foo(
  id number
 ,text varchar2(30)
)

CREATE OR REPLACE PROCEDURE p(p_xml IN CLOB, 
                              p_table_name IN VARCHAR2) 
IS

  l_context    DBMS_XMLSAVE.CTXTYPE;

  l_rows    NUMBER;

BEGIN

  l_context := DBMS_XMLSAVE.NEWCONTEXT(p_table_name); 

  l_rows := DBMS_XMLSAVE.INSERTXML(l_context,
                                   p_xml); 

  DBMS_XMLSAVE.CLOSECONTEXT(l_context); 

END;
/

Вызовите процедуру p с примером xml

DECLARE
  l_xml CLOB;
BEGIN
  l_xml := '<ROWSET>
                <ROW num="1">
                <ID>123</ID>                
                <TEXT>Some Text</TEXT>
                </ROW>
             </ROWSET>';

  p(p_xml => l_xml, 
    p_table_name => 'FOO');
END;
/

Запрос к таблице

select *
from foo

alt text

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...