Insert symbol ke Database Oracle

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

This entry was posted in Administration, Concept and tagged , , , , . Bookmark the permalink.

3 Responses to Insert symbol ke Database Oracle

  1. fahry says:

    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.

  2. 12bet indo says:

    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

Leave a Reply

Your email address will not be published. Required fields are marked *