首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • oracle10g 将xml文件 导入二维表 [已结贴,结贴人:wu_chen_hui]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-24 11:14:23 楼主
    在9i环境下,下面得存储过程能够成功将xml文件导入到二维表中,但在10g环境(第二版)下,会出现以下错误:

    SQL> exec xml2pdm1('d:\s5.xml');
    BEGIN xml2pdm1('d:\s5.xml'); END;
    *
    第 1 行出现错误:
    ORA-31001: 资源句柄或路径名 "d:\s5.xml" 无效
    ORA-06512: 在 "SYS.XDBURITYPE", line 11
    ORA-06512: 在 "XDB.DBMS_XSLPROCESSOR", line 142
    ORA-29280: 目录路径无效
    ORA-29280: 目录路径无效
    ORA-29280: 目录路径无效
    ORA-06512: 在 "XDB.DBMS_XMLPARSER", line 119
    ORA-06512: 在 "PDM.XML2PDM1", line 44
    ORA-06512: 在 line 1


    存储过程代码如下:

    (xmlfile varchar2) as
      p xmlparser.Parser;
      doc xmldom.DOMDocument;
      n xmldom.DOMNode;
      nl xmldom.DOMNodeList;
      len1 number;
      --根据PERSON结点生成插入SQL语句的过程
      function insertsql(node xmldom.DOMNode) return varchar2
      is
        n xmldom.DOMNode;
        nl xmldom.DOMNodeList;
        len number;
        nnm xmldom.DOMNamedNodeMap;
        isql varchar2(200);
      begin
        --取得PERSON结点所有属性
        nnm := xmldom.getAttributes(node);
        isql := 'insert into PEOPLE values(';
        isql := isql ¦ ¦ '''';
        --取得所有属性中的第一个属性,即"PERSONID",并拼接到SQL语句中
        isql := isql ¦ ¦ xmldom.getNodeValue(xmldom.item(nnm,0));
        isql := isql ¦ ¦ '''';
        --取得PERSON结点下的所有结点,准备遍历
        nl := xmldom.getChildNodes(node);
        len := xmldom.getLength(nl);
        for i in 0..len-1 loop
          --取出第i个结点
          n := xmldom.item(nl,i);
          isql := isql ¦ ¦ ',';
          isql := isql ¦ ¦ '''';
          --将结点的文本值取出并拼接到SQL语句中
          if xmldom.isnull(xmldom.getFirstChild(n))=false then
          isql := isql ¦ ¦ xmldom.getNodeValue(xmldom.getFirstChild(n));
          isql := isql ¦ ¦ '''';
          else
          isql := isql ¦ ¦ '''';
          end if;
        end loop;
        isql := isql ¦ ¦ ')';
        return isql;
      end insertsql;
    begin
      p := xmlparser.newParser;
      xmlparser.parse(p,xmlfile);
      --转换xml文件成DOM对像
      doc := xmlparser.getDocument(p);
      xmlparser.freeParser(p);
      --取出所有PERSON元素
      nl := xmldom.getElementsByTagName(doc,'NODE');
      len1 := xmldom.getLength(nl);
      --清空people表的内容
      delete from PEOPLE;
      for i in 0..len1-1 loop
        --取出第i个PERSON元素
        n := xmldom.item(nl,i);
        --执行插入该PERSON元素所用的SQL语句
        execute immediate insertsql(n);
        commit;
      end loop;
      xmldom.freeDocument(doc);
    end xml2pdm1;


    谢谢解答!
    0  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-24 14:15:241楼 得分:0
    你是在客户端导数据吧
    提示路径不对,应该把文件拷到服务器上!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-24 14:21:022楼 得分:0
    ORA-31001 Invalid resource handle or path name "string"

    Cause: An invalid resource handle or path name was passed to the XDB hierarchical resolver.

    Action: Pass a valid resource handle or path name to the hierarchical resolver.

    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-24 20:41:513楼 得分:0
    我现在客户端和服务器是一台机子,呵呵,还没进行分布!
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved