目前,我有以下查詢: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()'。 –