Oracle导出XML文件

1、创建目录-- Create directory

create or replace directory XML_PATH
  as 'D:\AAA';

 2、导出XML

create or replace procedure cllx_db2xml
is
   doc xmldom.DOMDocument;
   ret xmldom.DOMNode;
   rootnode xmldom.DOMNode;
   xmlfile varchar2(100) := 'XML_PATH'||'\'||'cllx.xml';
   cursor cur_cllx is select * from code where dmlb='1';

   procedure addcllx(doc xmldom.DOMDocument,parentnode xmldom.DOMNode,dmz varchar2,dmsm varchar2)
   is
      cllxelem xmldom.DOMElement;
      cllxnode xmldom.DOMNode;
      itemelem xmldom.DOMElement;
      itemnode xmldom.DOMNode;
      text xmldom.DOMText;
      begin

        cllxelem := xmldom.createElement(doc,'dmxx');
        cllxnode := xmldom.appendChild(parentnode,xmldom.makeNode(cllxelem));

        itemelem := xmldom.createElement(doc,'dmz');
        itemnode := xmldom.appendChild(cllxnode,xmldom.makeNode(itemelem));
        text := xmldom.createTextNode(doc,dmz);
        itemnode := xmldom.appendChild(itemnode,xmldom.makeNode(text));

        itemelem := xmldom.createElement(doc,'dmms');
        itemnode := xmldom.appendChild(cllxnode,xmldom.makeNode(itemelem));
        text := xmldom.createTextNode(doc,dmsm);
        itemnode := xmldom.appendChild(itemnode,xmldom.makeNode(text));
      end addcllx;

begin
      --创建一个新的文档对象
      doc := xmldom.newDOMDocument;
      --根标签
      rootnode := xmldom.makeNode(xmldom.createElement(doc,'jtfs'));
      ret := xmldom.appendChild(xmldom.makeNode(doc),rootnode);
      --遍历结果集
      for v_row in cur_cllx loop
          addcllx(doc,ret,v_row.dmz,v_row.dmsm1);
      end loop;
  
      --设置版本号
      xmldom.setVersion(doc,'1.0');
      --把数据写入文件
      xmldom.writeToFile(doc,xmlfile,'GBK');
      --释放文档对象资源
      xmldom.freeDocument(doc);

end cllx_db2xml;
 

你可能感兴趣的:(oracle,xml)