请大家帮我看一下这个存储过程:
CREATE OR REPLACE PROCEDURE SP_TEST_XML
IS
path varchar2(100);
file_name VARCHAR2(50);
zeRow ze_file%ROWTYPE;
doc dbms_xmldom.DOMDocument;
main_node dbms_xmlDom.DOMNode;
root_ze_node dbms_xmlDom.DOMNode;
root_ze_elmt dbms_xmlDom.DOMElement;
CURSOR cur_ze IS SELECT * FROM ze_file
BEGIN
file_name := 'ze'||To_Char(sysdate,'yyyyMMdd')||'.xml';
path := 'XMLDIR/'||file_name;
FOR zeRow IN cur_ze Loop
begin
ze01_elmt := dbms_xmldom.createElement(doc, 'ze01');
ze01_node := dbms_xmldom.appendChild(root_ze_node,
dbms_xmldom.makeNode(ze01_elmt));
temp_node := dbms_xmldom.appendChild(ze01_node,
dbms_xmlDom.makeNode(dbms_xmldom.createTextNode(doc,zeRow.ze01)));
dbms_xmlDom.writeToFile(doc,path);
END loop;
end;
我想把ze_file这个表ze01里的全部的数据都写到xml文件中,但是这样只能把ze_file中最后一行数据写到xml文件中.也就是说后面的数据总是覆盖前面的,在此想问大家一下有没有什么好的办法能让这个文件追加,而不是覆盖!
CREATE OR REPLACE PROCEDURE SP_TEST_XML
IS
path varchar2(100);
file_name VARCHAR2(50);
zeRow ze_file%ROWTYPE;
doc dbms_xmldom.DOMDocument;
main_node dbms_xmlDom.DOMNode;
root_ze_node dbms_xmlDom.DOMNode;
root_ze_elmt dbms_xmlDom.DOMElement;
CURSOR cur_ze IS SELECT * FROM ze_file
BEGIN
file_name := 'ze'||To_Char(sysdate,'yyyyMMdd')||'.xml';
path := 'XMLDIR/'||file_name;
FOR zeRow IN cur_ze Loop
begin
ze01_elmt := dbms_xmldom.createElement(doc, 'ze01');
ze01_node := dbms_xmldom.appendChild(root_ze_node,
dbms_xmldom.makeNode(ze01_elmt));
temp_node := dbms_xmldom.appendChild(ze01_node,
dbms_xmlDom.makeNode(dbms_xmldom.createTextNode(doc,zeRow.ze01)));
dbms_xmlDom.writeToFile(doc,path);
END loop;
end;
我想把ze_file这个表ze01里的全部的数据都写到xml文件中,但是这样只能把ze_file中最后一行数据写到xml文件中.也就是说后面的数据总是覆盖前面的,在此想问大家一下有没有什么好的办法能让这个文件追加,而不是覆盖!
难道上一这样吗:
CREATE OR REPLACE PROCEDURE SP_TEST_XML
IS
path varchar2(100);
file_name VARCHAR2(50);
zeRow ze_file%ROWTYPE;
doc dbms_xmldom.DOMDocument;
main_node dbms_xmlDom.DOMNode;
root_ze_node dbms_xmlDom.DOMNode;
root_ze_elmt dbms_xmlDom.DOMElement;
CURSOR cur_ze IS SELECT * FROM ze_file
BEGIN
file_name := 'ze'||To_Char(sysdate,'yyyyMMdd')||'.xml';
path := 'XMLDIR/'||file_name;
FOR zeRow IN cur_ze Loop
begin
ze01_elmt := dbms_xmldom.createElement(doc, 'ze01');
ze01_node := dbms_xmldom.appendChild(root_ze_node,
dbms_xmldom.makeNode(ze01_elmt));
temp_node := dbms_xmldom.appendChild(ze01_node,
dbms_xmlDom.makeNode(dbms_xmldom.createTextNode(doc,zeRow.ze01)));
END loop;
dbms_xmlDom.writeToFile(doc,path);
end;