在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;
谢谢解答!