oracle存储过程生成xml文件

create or replace procedure table2xml is
  cursor  person_cur is select * from people;
  person_data people%rowtype;
  doc  xmldom.DOMDocument;
  main_node xmldom.DOMNode;
  root_node xmldom.DOMNode;
  item_node xmldom.DOMNode;
  person_node xmldom.DOMNode;
  root_elem xmldom.DOMElement;
  item_elem xmldom.DOMElement;
  item_text xmldom.DOMText;
begin
  open  person_cur;
  doc := xmldom.newDOMDocument;--创建文档对象
  main_node := xmldom.makeNode(doc);--读取文档节点
  root_elem := xmldom.createElement(doc,'people'); --添加一个元素(节点)
  root_node := xmldom.appendChild(main_node,xmldom.makeNode(root_elem));
 
  loop
    fetch person_cur into  person_data;
    exit when person_cur%notfound;
   
    item_elem := xmldom.createElement(doc,'peopleNo'); --添加 peopleNo 元素
    xmldom.setAttribute(item_elem,'peopleID',person_data.personid);--添加peopleNo 属性
    person_node:= xmldom.appendChild(root_node,xmldom.makeNode(item_elem));--添加为文档的子节点

   
    item_elem :=xmldom.createElement(doc,'name');
    item_node :=xmldom.appendChild(person_node,xmldom.makeNode(item_elem));
    item_text :=xmldom.createTextNode(doc,person_data.name); --设置元素的值
    item_node :=xmldom.appendChild(item_node,xmldom.makeNode(item_text));  --把该值加入该节点中
   
    item_elem :=xmldom.createElement(doc,'address');
    item_node :=xmldom.appendChild(person_node,xmldom.makeNode(item_elem));
    item_text :=xmldom.createTextNode(doc,person_data.address); --设置元素的值
    item_node :=xmldom.appendChild(item_node,xmldom.makeNode(item_text));  --把该值加入该节点中
   
    item_elem :=xmldom.createElement(doc,'tel');
    item_node :=xmldom.appendChild(person_node,xmldom.makeNode(item_elem));
    item_text :=xmldom.createTextNode(doc,person_data.tel); --设置元素的值
    item_node :=xmldom.appendChild(item_node,xmldom.makeNode(item_text));  --把该值加入该节点中
   
    item_elem :=xmldom.createElement(doc,'fax');
    item_node :=xmldom.appendChild(person_node,xmldom.makeNode(item_elem));
    item_text :=xmldom.createTextNode(doc,person_data.fax); --设置元素的值
    item_node :=xmldom.appendChild(item_node,xmldom.makeNode(item_text));  --把该值加入该节点中
   
    item_elem :=xmldom.createElement(doc,'email');
    item_node :=xmldom.appendChild(person_node,xmldom.makeNode(item_elem));
    item_text :=xmldom.createTextNode(doc,person_data.emall); --设置元素的值
    item_node :=xmldom.appendChild(item_node,xmldom.makeNode(item_text));  --把该值加入该节点中
   
  end loop;
  xmldom.writeToFile(doc,'e:\person.xml');
  xmldom.freeDocument(doc);
  close person_cur;
end;

你可能感兴趣的:(oracle存储过程)