目前,我有以下查询:XMLAGG与RTRIM问题
SELECT
CASE
WHEN ('[Param.3]' = 'SELECTED')
THEN (SELECT RTRIM(XMLELEMENT("Rowset", XMLAGG(RW.R ORDER BY RW."ID")), ' ') AS Orders
FROM TMTABLE UL, XMLTABLE('Rowsets/Rowset/Row' PASSING UL.TEXT COLUMNS "ID" NUMBER(19) PATH 'ID', R xmltype path '.') AS RW
WHERE ID BETWEEN '[Param.1]' and '[Param.2]')
WHEN ('[Param.3]' = 'ALL')
THEN (SELECT RTRIM(XMLELEMENT("Rowset", XMLAGG(RW.R ORDER BY RW."ID")) , ' ') AS Orders
FROM TMTABLE UL, XMLTABLE('Rowsets/Rowset/Row' PASSING UL.TEXT COLUMNS "ID" NUMBER(19) PATH 'ID', R xmltype path '.') AS RW)
END AS Orders
FROM
dual
此查询,如果有要合并到单行XML AGG XML行的少数工作正常。但是,如果要合并的XML的行数较高,该查询抛出以下错误:
ORA-19011: Character string buffer too small
什么变化,我需要申请,使这项工作?
我想下面的查询:( “行集”,XMLAGG(RW.R ORDER BY RW “ID”)getClobVal()。)选择XMLELEMENT, '')AS从TMTABLE UL,XMLTABLE(订单 '行集/行集/列' 逝水UL.TEXT 列 “ID” NUMBER(19)PATH 'ID', ř的XMLType路径 )AS RW 但它给我follwoing错误 '':ORA-00932:不一致的数据类型:预期 - 得到了CHAR –
@SohamShah我认为你需要把'.getClobVal()'放在最后一个XML函数之后,而不仅仅是最后一个XMLAGG。尝试:'XMLELEMENT(“Rowset”,XMLAGG(RW.R ORDER BY RW。“ID”),'').getClobVal()'。 –