从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不是你设置的目录或为空(缺省为空),则说明你的设置未生效。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值