0

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

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.

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

4

3 回答 3

1

在您的 xpath 中包含 /text。比如 select (COLUM_NAME).extract('//parentNode/chileNode/text()').getStringVal() as Colum_Name from TableName where UUID='Value'

于 2015-11-09T09:42:47.280 回答
0

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

于 2016-02-04T18:58:58.660 回答
0

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

SELECT XMLTYPE(''||clob_field||'').EXTRACT('//se/text()').getStringVal() FROM tablename

于 2018-12-12T03:31:32.023 回答