从oracle10中导出xml文件

create or replace procedure table2xml is 
  cursor  person_cur is select * from human; 
  person_data human%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,'human'); --添加一个元素(节点) 
  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,'humanID'); --添加 peopleNo 元素 
--    xmldom.setAttribute(item_elem,'humanID',person_data.humanid);--添加peopleNo 属性 
    
    person_node:= xmldom.appendChild(root_node,xmldom.makeNode(item_elem));--添加为文档的子节点 

    
    item_elem :=xmldom.createElement(doc,'humanName'); 
    item_node :=xmldom.appendChild(person_node,xmldom.makeNode(item_elem)); 
    item_text :=xmldom.createTextNode(doc,person_data.humanName); --设置元素的值 
    item_node :=xmldom.appendChild(item_node,xmldom.makeNode(item_text));  --把该值加入该节点中 
    
    item_elem :=xmldom.createElement(doc,'humanPassword'); 
    item_node :=xmldom.appendChild(person_node,xmldom.makeNode(item_elem)); 
    item_text :=xmldom.createTextNode(doc,person_data.humanPassword); --设置元素的值 
    item_node :=xmldom.appendChild(item_node,xmldom.makeNode(item_text));  --把该值加入该节点中 
    
    
  end loop; 
  
  xmldom.writeToFile(doc,'D:\xml\test.xml','UTF-8'); 
  xmldom.freeDocument(doc); 
  close person_cur; 
end;


执行后,在oracle10中执行 xmlDom.writeToFile时报
   ora-29280 ora-06512 SYS.UTL_FILE 路径错误.
   解决方式如下:
   1、创建你打算输出文件的目录(mkdir xml),如:D:\xml
   2、用文本编辑器打开x:\oracle\product\10.2.0\db_2\database\inittest.ora文件;
   3、在后面追加如下行:
      *.utl_file_dir='D:\xml'
   4、重新启动数据库;
   5、在sqlplus中用下面的命令检查是否生效
   SQL>  show parameter utl_file_dir;
   NAME                                 TYPE        VALUE
   ------------------------------------ ----------- --------------
   utl_file_dir                         string      D:\xml
   如果utl_file_dir 参数的value不是你设置的目录或为空(缺省为空),则说明你的设置未生效。

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