Mengatasi Error ORA-01489: result of string concatenation is too long

Jika Anda menggunakan fungsi LISTAGG() di oracle dan Anda menemukan kesalahan ORA 01489 result of string concatenation is too long. Itu karena Anda mencoba membuat daftar yang dipisahkan koma yang terlalu panjang untuk varchar2.

Di Oracle, kolom VARCHAR2 dapat berisi paling banyak 4000 karakter, solusinya variabel yang lebih besar dari 4000 karakter menggunakan tipe data CLOB. Jika Anda mencoba membuat daftar yang lebih panjang dari 4000 karakter, LISTAGG akan memberi Anda kesalahan ORA 01489.

Berikut ini contoh query yang gagal, karena daftarnya terlalu panjang:

select listagg(object_name,', ') within group (order by object_id) x
from dba_objects
where rownum <= 500;

Berikut adalah versi setara yang menggunakan XMLAGG() yang berfungsi dengan baik, karena mengembalikan tipe data CLOB:

select rtrim(xmlagg(xmlelement(e,object_name,', ').extract('//text()') order by object_id).getclobval(),', ') x
from dba_objects
where rownum <= 500

 

Pos terkait

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *

Situs ini menggunakan Akismet untuk mengurangi spam. Pelajari bagaimana data komentar Anda diproses.