Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

XMLAGG dengan masalah RTRIM

Anda perlu menambahkan .getClobVal() ke hasil XMLType Anda, sebelum RTRIM.

XMLAGG berfungsi dengan baik dengan data dalam jumlah besar. Dan TRIM bekerja dengan baik dengan CLOB. Tetapi ketika Anda menggabungkannya, Oracle mencoba mengubah XMLType menjadi VARCHAR2, bukan CLOB.

Contoh:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ORA-00947 Nilai tidak cukup saat mendeklarasikan tipe secara global

  2. MOD() Fungsi di Oracle

  3. Pilih Baris Ke-N Dari Tabel Di Oracle

  4. cara membangun kembali antrian wf_Java_deferred

  5. Kapan Oracle mengindeks nilai kolom nol?