【问题标题】:Getting invalid datatype error while parsing xml in Oracle在 Oracle 中解析 xml 时出现无效数据类型错误
【发布时间】:2014-06-11 22:37:35
【问题描述】:

我正在尝试在 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 的新手,所以无法找出错误。有人可以在这里帮助我吗? 谢谢

【问题讨论】:

    标签: plsql oracle11g


    【解决方案1】:

    int 和 path 之间多了一个逗号:

          ,DataTypeID int, path '/Data/DataTypeID'       
    

    应该是

          ,DataTypeID int path '/Data/DataTypeID'       
    

    或者您可以使用number 代替int。

    您的select 也必须选择进入 的东西,因为这是在PL/SQL 上下文中。所以现在你会得到一个 PLS-00428 错误。在不知道您打算如何处理结果的情况下,您应该如何纠正这一点并不完全清楚 - 无论您实际上不需要 PL/SQL,还是您想要遍历结果以对它们做一些事情,或者插入另一个表,或者...

    【讨论】:

    • 实际上这是更大查询的一部分。我试图找到错误。非常感谢
    • 好的,然后忽略该部分,+1 用于隔离问题并仅显示查询的相关部分 *8-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多