sql >> Database teknologi >  >> RDS >> Oracle

XMLAGG med RTRIM-problem

Du skal tilføje .getClobVal() til dit XMLType-resultat, før RTRIM.

XMLAGG fungerer fint med store mængder data. Og TRIM fungerer fint med CLOB'er. Men når du sætter dem sammen, forsøger Oracle at konvertere XMLTypen til en VARCHAR2 i stedet for en CLOB.

Eksempel:

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. Forbedring af top/top faldende medianløsning

  2. Hvordan får man UTF-8 til at fungere i Java webapps?

  3. Kontrollerer, om en postgresql-tabel eksisterer under python (og sandsynligvis Psycopg2)

  4. Træk måneder fra en dato i PostgreSQL