我在使用 Oracle XML 函数时遇到问题,例如
xmlelement
, xmlagg
,xmlattributes
例如:
select
XMLELEMENT(
"OrdrList",
XMLAGG(
XMLELEMENT(
"IDs",
XMLATTRIBUTES(
USERCODE AS "usrCode",
VALDATE AS "validityDate"
)
)
)
) from TMP
/
该代码似乎是正确的,因为它在返回少量消息时确实有效
是的,我确实尝试设置“long”、“pagesize”、“linesize”等......但从未能够检索到完整的大约。500.000 个 XML 消息(即表格行)。
阅读一些背景文献(例如 Jürgen Sieben 的“Oracle SQL”),似乎这些函数不是为大型数据集设计的。Sieben 先生解释说,他仅将这些用于小型查询(最大 1 MB 输出大小),在此之上他建议使用“面向对象的函数”,但没有解释哪个。
有人有这方面的经验,并且上述 XML 函数可以工作或知道替代方案吗?
根据以下建议:通过 [...] 转换为 CLOB.getclobval(0, 2) from TMP
现在遍历整个表。缓慢,但完整。
我必须进行更正:getclobval
提供更长但仍不完整的列表。由于我对上述 Oracle XML 函数的实现/文档质量的信心不足,我将从数据库创建标准文件输出并自己实现 XML 转换。
最新更新:我找到了罪魁祸首:XMLAGG
!如果我把它拿出来,数据库会被快速、正确、逐步和完全解析。奇怪,因为 XMLAGG 并没有真正复杂的工作:创建传入和传出 XML 标记