在Oracle中解析xml时获取无效的数据类型错误

时间:2014-06-11 14:30:49

标签: plsql oracle11g

我正在尝试解析PL SQL中的XML。但是得到以下错误

Error report:
ORA-06550: line 21, column 43:
PL/SQL: ORA-00902: invalid datatype
ORA-06550: line 17, column 1:
PL/SQL: SQL Statement ignored
06550. 00000 -  "line %s, column %s:\n%s"
*Cause:    Usually a PL/SQL compilation error.
*Action:

我正在尝试运行查询

DECLARE
l_xml xmltype:= xmltype('<Table>
   <Data>
      <DataKey>Test</DataKey>
      <DataTypeID>8</DataTypeID>
      <DataValue>test1</DataValue>
      <Id>eb96c9c1-6236-403d-9afa-6d45ec623dbc</Id>
   </Data>
</Table>');
begin

select * FROM 
xmltable ('/Table/Data' passing l_xml
         columns
          DataKey nvarchar2(50) path '/Data/DataKey'
          ,DataTypeID int, path '/Data/DataTypeID'       
         , DataValue nvarchar2(1024) path '/Data/DataValue');

end;
/

我是PL / SQL的新手,所以无法弄清楚错误。有人可以帮我吗? 谢谢

1 个答案:

答案 0 :(得分:1)

intpath之间有一个额外的逗号:

      ,DataTypeID int, path '/Data/DataTypeID'       

应该是

      ,DataTypeID int path '/Data/DataTypeID'       

或者您可以使用number代替int

您的select也必须选择中,因为这是在PL / SQL上下文中。所以现在你会得到一个PLS-00428错误。在不知道你打算如何处理结果的情况下,你应该如何纠正这一点并不完全是显而易见的 - 你是否真的不需要PL / SQL,或者你想循环结果来对它们做些什么,或者插入到另一张桌子,或......