sql >> Databáze >  >> RDS >> Oracle

XMLAGG s problémem RTRIM

Musíte přidat .getClobVal() na váš výsledek XMLType před RTRIM.

XMLAGG funguje dobře s velkým množstvím dat. A TRIM funguje dobře s CLOBy. Ale když je dáte dohromady, Oracle se pokusí převést XMLType na VARCHAR2 namísto CLOB.

Příklad:

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. Jak vygenerovat celý DDL schématu Oracle (skriptovatelné)?

  2. Jak zkopírovat ze souboru CSV do tabulky PostgreSQL s hlavičkami v souboru CSV?

  3. jak udělat sdružování připojení v Javě?

  4. Systém automatického e-mailu pro odeslání souhrnné zprávy databáze