sql >> Databasteknik >  >> RDS >> Oracle

XMLAGG med RTRIM-problem

Du måste lägga till .getClobVal() till ditt XMLType-resultat, före RTRIM.

XMLAGG fungerar bra med stora mängder data. Och TRIM fungerar bra med CLOBs. Men när du sätter ihop dem försöker Oracle konvertera XMLType till en VARCHAR2 istället för en CLOB.

Exempel:

create or replace function test_function return clob is
    v_clob clob;
begin
    v_clob := v_clob || lpad('a', 4000, 'a');
    v_clob := v_clob || lpad('b', 4000, 'b');
    return v_clob;
end;
/

--Works fine, returns an XMLType
select xmlagg(xmlelement("asdf", test_function)) from dual;

--Works fine, returns a CLOB
select trim(test_function) from dual;

--ORA-19011: Character string buffer too small
select trim(xmlagg(xmlelement("asdf", test_function))) from dual;

--Works
select trim(xmlagg(xmlelement("asdf", test_function)).getClobVal()) from dual;


  1. hur man får hela resultatuppsättningen från SSMS

  2. oracle SQL hur man tar bort tid från datum

  3. Primärnyckel SQL-handledning – Hur man definierar en primärnyckel i en databas

  4. Hur Replace() fungerar i SQLite