DatabaseOracle

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

615
logo oracle
logo oracle
64 / 100 Skor SEO

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

 

Exit mobile version
Verified by MonsterInsights