Pengendalian Ralat dalam Oracle: ORA-01489: Hasil Penggabungan Rentetan Terlalu Panjang
Ralat ORA-01489 Oracle berlaku apabila hasil daripada gabungan rentetan melebihi panjang maksimum yang dibenarkan. Walau bagaimanapun, ralat ini kadangkala boleh mengelirukan.
Kes 1: Melebihi Had SQL
Had SQL lalai untuk penggabungan rentetan ialah 4000 bait. Menggabungkan rentetan melebihi had ini mencetuskan ralat ORA-01489. Ini terpakai pada fungsi LISTAGG juga.
Penyelesaian:
Gunakan XMLAGG dan bukannya LISTAGG, kerana ia membenarkan rentetan bercantum yang lebih besar.
Kes 2: Menggabungkan Berbilang Panjang Lajur
Jika anda menggabungkan berbilang lajur yang setiap satu melebihi 4000 bait, hasilnya masih boleh mencetuskan ralat.
Penyelesaian:
Gabungkan output XMLAGG setiap lajur untuk mengelakkan had SQL. Contohnya:
SELECT rtrim(xmlagg(XMLELEMENT(e,col1,',').EXTRACT('//text()') ).GetClobVal(), ',') || rtrim(xmlagg(XMLELEMENT(e,col2,',').EXTRACT('//text()') ).GetClobVal(), ',') AS very_long_text FROM DATA GROUP BY ID ORDER BY ID;
Atas ialah kandungan terperinci Bagaimana Mengendalikan ORA-01489 Oracle: 'Hasil Penggabungan Rentetan Terlalu Panjang'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!