2010-12-01 83 views
1

我可以通過使用DBMS_XMLGEN輕鬆導出表數據。但是有沒有重新導入這個XML的包?通過DBMS_XMLGEN導出Oracle表數據 - >如何導入?

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

什麼的Oracle版本的過程p你正在用嗎? – 2010-12-01 14:30:11

回答

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

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

+0

哦,我沒有注意到DBMS_XMLSAVE - 很酷,thx! – christian 2010-12-02 09:05:28