Kadang kita bingung kenapa tidak bisa melakukan insert karakter simbol (misalnya Ø) ke database Oracle.
SQL> create table test (a varchar2(10)); SQL> insert into test values ('Ø'); SQL> select * from test; A ---------- ?
Lho kok, hasilnya ? bukannya Ø.
Simbol Ø adalah karakter no 216. Coba kita query ke database:
SQL> select chr(216) from dual; C - ?
OO.. ternyata masih tidak terbaca. Selidik punya selidik, ternyata ini berkaitan dengan CHARACTER SET di database dan di client di mana kita melakukan query. Untuk bisa melakukan hal itu, database Oracle dan client harus punya CHARACTER SET yang sesuai.
Contoh character set yang mengakomodasi simbol Ø adalah WE8MSWIN1252 dan WE8ISO8859P1, lebih detail silahkan lihat referensi. WE8MSWIN1252 adalah superset dari WE8ISO8859P1, dengan arti lain WE8MSWIN1252 berisi semua karaketer WE8ISO8859P1 dan tambahan lainnya. Kalau saat ini CHARACTER SET database tidak mencakup simbol Ø, sebaiknya gunakan WE8MSWIN1252 daripada WE8ISO8859P1.
Mari kita check apakah database kita sudah menggunakan CHARACTER SET yang sesuai
SQL> col PROPERTY_VALUE for a20 SQL> col PROPERTY_NAME for a20 SQL> select PROPERTY_NAME,PROPERTY_VALUE from database_properties where PROPERTY_NAME= 'NLS_CHARACTERSET'; PROPERTY_NAME PROPERTY_VALUE -------------------- -------------------- NLS_CHARACTERSET WE8MSWIN1252
Database sudah menggunakan CHARACTER SET yang sesuai. Tapi tidak bisa menampilkan symbol Ø. Nah kalau gini pasti ada masalah dengan setting di client.
Di UNIX, lihat value dari environment (parameter) NLS_LANG.
echo $NLS_LANG
Yup, ternyata NLS_LANG tidak disetting. Sekarang, setting NLS_LANG
NLS_LANG=AMERICAN_AMERICA.WE8MSWIN1252; export NLS_LANG
Sekarang coba jalankan perintah SQLPLUS berikut
SQL> delete from test; SQL> insert into test values('Ø'); 1 row created. SQL> insert into test values( chr(216) ); 1 row created. SQL> select * from test; A ---------- Ø Ø
OO… berhasil 🙂
Coba kalau NLS_LANG di client kita ganti WE8ISO8859P1, apakah masih bisa:
NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1; export NLS_LANG
SQL> select * from test; A ---------- Ø Ø
OO… Ternyata masih bisa juga.
MENGUBAH CHARACTER SET DI DATABASE
Kalau CHARACTER SET di database tidak men-support karakter yang kita inginkan, berikut ini cara mengubah CHARACTER SET (misalkan kita ingin mengubahnya menjadi WE8MSWIN1252) :
SQL> shutdown immediate SQL> startup mount SQL> ALTER SYSTEM ENABLE RESTRICTED SESSION; SQL> ALTER DATABASE CHARACTER SET WE8MSWIN1252;
Setelah itu, restart database
SQL> shutdown immediate SQL> startup
Referensi:
Oracle® Database Globalization Support Guide 10g Release 2 (10.2)
Choosing a Character Set
Setting Up a Globalization Support Environment
Bang tolonk dong kirim kan link web abang ini biar saya selalu membuka situs abang saya orang bawah,n. Pengen belajar jga saya tunggu D,spam yahoo. trima kasih.
Maknsudnya gimana gan?
I’m not certain where you’re getting your information, however great topic.
I must spend some time learning more or figuring out more.
Thank you for wonderful info I was looking for this information for my mission.
my web page 12bet indo