通过DBMS_XMLGEN导出Oracle表数据 - >如何进口?

时间:2010-12-01 11:59:24

标签: oracle

我可以使用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;
/

由于 基督教

1 个答案:

答案 0 :(得分:2)

你看过DBMS_XMLSAVE了吗?

Oracle文档没有提供它的使用示例,因此快速谷歌将向您展示。

以下是基于您的示例的内容。 (其灵感来自here)的信息

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;
/

使用一些示例xml调用过程p

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