Sebelum Oracle 12.1, sebuah VARCHAR2
kolom dibatasi untuk menyimpan 4000 byte data dalam kumpulan karakter basis data meskipun dideklarasikan VARCHAR2(4000 CHAR)
. Karena setiap karakter dalam string Anda memerlukan 2 byte penyimpanan dalam kumpulan karakter UTF-8, Anda tidak akan dapat menyimpan lebih dari 2000 karakter dalam kolom. Tentu saja, angka tersebut akan berubah jika beberapa karakter Anda sebenarnya hanya membutuhkan 1 byte penyimpanan atau jika beberapa di antaranya membutuhkan lebih dari 2 byte penyimpanan. Jika kumpulan karakter database adalah Windows-1252, setiap karakter dalam string Anda hanya memerlukan satu byte penyimpanan sehingga Anda dapat menyimpan 4000 karakter dalam kolom.
Karena Anda memiliki string yang lebih panjang, apakah mungkin untuk mendeklarasikan kolom sebagai CLOB
bukan sebagai VARCHAR2
? Itu akan (secara efektif) menghapus batasan panjang (ada batasan ukuran CLOB
itu tergantung pada versi Oracle dan ukuran blok tetapi setidaknya dalam kisaran beberapa GB).
Jika Anda menggunakan Oracle 12.1 atau lebih baru, max_string_size
parameter memungkinkan Anda untuk menambah ukuran maksimum VARCHAR2
kolom dari 4000 byte menjadi 32767 byte
.