Jan 5, 2006

Bermain "String" di Oracle

·

Pada kasus-kasus tertentu di dalam pemrograman database, terkadang kita harus melakukan penggabungan data-data string dengan menggunakan separator (tanda pemisah) tertentu.

Sebagai contoh, asumsikan kita memiliki sebuah tabel KARYAWAN dengan data-data seperti berikut:



Selanjutnya, kita ingin menampilkannya seperti berikut:



Bagaimana caranya? Berikut ini langkah-langkah yang dapat menjadi alternatif untuk dapat melakukan hal di atas.

Langkah 1, Buatlah sebuah fungsi dengan field JABATAN sebagai parameternya. Fungsi ini akan mengembalikan nama-nama awal yang terdapat pada jabatan tersebut, dan akan ditampilkan dalam bentuk comma-separated-list (daftar nama yang dibatasi dengan koma). Adapun sintaknya adalah sebagai berikut:

SQL> create or replace function getKaryawan(vjabatan in karyawan.jabatan%type)
2 return varchar2
3 is
4 text_hasil varchar2(1000) := null; -- inisialisasi nilai dengan NULL
5 begin
6 for i in (select nama_awal from karyawan where jabatan = vjabatan) loop
7 text_hasil := text_hasil || ',' || i.nama_awal;
8 end loop;
9 return ltrim(text_hasil, ','); -- menghapus tanda koma untuk karakter pertama
10 end;
11 /

Function created.

Langkah 2, Buatlah sebuah query dari tabel KARYAWAN dengan memanggil fungsi di atas, dan lakukan GROUP terhadap field JABATAN, seperti yang tampak pada sintak berikut:

SQL> select jabatan, getKaryawan(jabatan) from karyawan group by jabatan;

0 comments: