Hiện nay tôi có các truy vấn sau đây:XMLAGG với RTRIM vấn đề
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
Truy vấn này đang làm việc tốt nếu có số ít các dòng XML được sáp nhập vào hàng duy nhất với AGG XML. Nhưng nếu số lượng Hàng XML được hợp nhất cao hơn, truy vấn này sẽ ném lỗi sau:
ORA-19011: Character string buffer too small
Tôi cần áp dụng thay đổi gì để thực hiện công việc này?
tôi đang cố gắng truy vấn sau đây: (. "RowSet", XMLAGG (RW.R ORDER BY RW "ID") getClobVal().) Chọn XMLELEMENT, '') AS Orders từ TMTABLE UL, XMLTABLE ('Rowsets/rowSet/Row' đi qua UL.TEXT COLUMNS "ID" NUMBER (19) pATH 'ID', R xmltype đường ) AS RW Nhưng nó mang lại cho tôi lỗi follwoing '': ORA-00.932: các kiểu dữ liệu không phù hợp: được mong đợi - có CHAR –
@SohamShah Tôi nghĩ rằng bạn cần đặt '.getClobVal()' sau hàm XML cuối cùng, không chỉ là XMLAGG cuối cùng. Hãy thử: 'XMLELEMENT (" Rowset ", XMLAGG (RW.R ORDER BY RW." ID "), '') .getClobVal()'. –