ORA-19037: XMLType result can not be a fragment
Cause: The select item of the query in newContextFromHierarchy() is an XML fragment.
Action: Make sure the select item of the query in newContextFromHierarchy() is NOT an XML fragment
ORA-19037: XMLType result can not be a fragment 是 Oracle 报出的一条错误信息,表示XMLType查询结果不能返回一个片段。
ORA-19037 表示 XMLType 查询结果不能返回一个片段,必须是完整的XML文档。如果查询中包含了几个XML文档,形成了片段,则会引发此错误,而不能正常返回结果。
查询时,如果需要返回多条 XMLType 数据,则需要将多条数据拼接为一个完整的XML文档。拼接的方法可以使用XMLAgg函数,也可以使用xmltype的聚合操作。具体操作如下:
1. 使用XMLAgg函数拼接
XMLAgg函数可以用来聚合多个XML文档并返回一个完整的XML文档,语法格式为:
XMLAgg(XMLELEMENT(“rootElementName”, COLUMN)).
其中,COLUMN为XMLTYPE类型的列或者查询,XMLType可以是事先准备好的数据,也可以是用 XMLElement 生成的新结果。
2. 使用xmltype的聚合操作
使用 xmltype 内置的运算符拼接多个XML文档,语法格式为:
XMLType(‘XMLType1′ ) || XMLType(‘XMLType2′ ) || …
以上两种方法均可以实现 XML 拼接的功能,任选一种即可。