SELECT查询中的XML解析失败

时间:2013-07-02 04:15:24

标签: sql oracle oracle-sqldeveloper

我正在RHEL框上的Oracle SQL开发人员IDE中运行SELECT query,如下所示

SELECT count(*) 
From xyz 
WHERE xmltype(xyz.xmlColumn).existsNode('//name=""') = 1;

如果我执行单个记录,上面的查询工作正常。但是当我为整个表执行它时它失败并出现错误:

ORA-31011: XML parsing failed
ORA-19202: Error occurred in XML processing
LPX-00210: expected '<' instead of 'C'
Error at line 1
ORA-06512: at "SYS.XMLTYPE", line 272
ORA-06512: at line 1
31011. 00000 -  "XML parsing failed"
*Cause:    XML parser returned an error while trying to parse the document.
*Action:   Check if the document to be parsed is valid.

上面的任何指示都会对我有帮助。

3 个答案:

答案 0 :(得分:1)

在xpath中包含/ text。喜欢 选择(COLUM_NAME).extract(&#39; // parentNode / chileNode / text()&#39;)。getStringVal()作为TableName中的Colum_Name,其中UUID =&#39;值&#39;

答案 1 :(得分:0)

Oracle抱怨“xyz.xmlColumn”不是有效的xml列或类型。它期望<element>....</element>格式

答案 2 :(得分:0)

您的问题是,由于缺少根节点,因此CLOB中存储的不是XML文档。由于您正在扫描提取物中的整个文档,因此可以将其包装在一个元素中,以确保您只有1个并且只有1个根,此时XMLTYPE强制转换将起作用。

选择   XMLTYPE(''|| clob_field ||'')。EXTRACT('// se / text()')。getStringVal() FROM表名