我可以使用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;
/
由于 基督教
答案 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