Anda di halaman 1dari 10

Program Studi Teknik Informatika Fakultas Ilmu Komputer Universitas Mercu Buana

MATA KULIAH PRAKTIKUM PERANCANGAN BASIS DATA Modul 11 Penggunaan Collection dalam PL/SQL Oleh: Anis Cherid, M.T.I.

I.

PENGENALAN COLLECTION Collection adalah struktur data yang dimiliki Oracle Database Application Express, yang

memiliki bentuk seperti array of structure (dalam Bahasa C++) atau array of record (dalam Bahasa Pascal) atau array of type (dalam Bahasa Basic). Sebuah collection harus memiliki nama dan secara logis berbentuk seperti sebuah tabel yang terdiri dari kolom dan baris. Pada Gambar 1.1 diperlihatkan bentuk logis dari sebuah collection. Sebuah collection dapat terdiri dari maksimum 50 kolom dan kolom kedua dari sebuah collection (kolom SEQ_ID) akan secara otomatis diisi oleh sistem dengan nomor urut penambahan data.
COLLECTION_NAME SEQ_ID C001 C002 C003 Gambar 1.1 Bentuk Logis Sebuah Collection C050

Untuk lebih mengenal collection, kita akan membuat aplikasi sederhana yang akan kita pergunakan membuat tabel yang terdiri dari 1 kolom untuk menyimpan angka dari 1 hingga 10 ke dalam collection. Silakan lakukan langkah-langkah berikut ini: 1. Login ke dalam Oracle Database menggunakan user HR atau user lain yang anda buat sendiri. 2. Buat sebuah aplikasi baru menggunakan Application Builder dan beri nama Latihan Collection 1 3. Tambahkan sebuah halaman berjenis blank ke dalam aplikasi baru tersebut dan beri nama Collection dengan 1 Kolom.

4. Tambahkan process baru ke dalam halaman dengan melakukan langkah-langkah berikut: a. Klik link untuk menambah process berjenis Page Rendering (bukan proses berjenis Page Processing) dan beri nama Buat Collection b. Tambahkan kode PL/SQL seperti yang tampak pada Gambar 1.2. Kode PL/SQL tersebut berguna untuk: i. Baris 1 2: Membuat koleksi baru bernama TABEL atau jika koleksi tersebut sudah dibuat maka kode ini akan mengosongkan (truncate) collection. ii. Baris 3 4: Menambah sebuah baris baru ke dalam collection dan menyimpan teks Adi ke dalam kolom C001. iii. Baris 5 6: Menambah sebuah baris baru ke dalam collection TABEL dan menyimpan teks Budi ke dalam kolom C001. iv. Baris 7 8: Menambah sebuah baris baru ke dalam collection TABEL dan menyimpan teks Dudi ke dalam kolom C001. v. Baris 9 10: Menambah sebuah baris baru ke dalam collection TABEL dan menyimpan teks Edi ke dalam kolom C001. vi. Baris 11 12: Menambah sebuah baris baru ke dalam collection TABEL dan menyimpan teks Hudi ke dalam kolom C001. c. Lanjutkan pembuatan process hingga selesai tanpa mengubah nilai-nilai default pada setiap halaman.

Gambar 1.2 Kode PL/SQL untuk Menambah 5 Data ke Dalam Kolom C001

5. Tambahkan region REPORT yang berjenis SQL Report dengan Title Tabel 1 Kolom. Kode SQL Query yang harus diketikkan pada bagian kode adalah seperti yang ditampilkan

pada Gambar 1.3. Perhatikan bahwa untuk mengambil data dari dalam collection, kita dapat mempergunakan query sebagaimana mengambil data dari dalam tabel sebuah database.

Gambar 1.3 SQL Query untuk Menampilkan Kolom C001 dari Collection TABEL

6. Jalankan atau run halaman tersebut, maka akan dihasilkan tampilan Oracle Database seperti dalam Gambar 1.4. Sebagaimana report yang sumber datanya adalah sebuah tabel dari database, report yang sumber datanya adalah collection dapat dimodifikasi sehingga format tampilannya sesuai dengan keinginan kita. Misalnya kita dapat mengganti heading dari kolom C001 menjadi Nama Pelanggan.

Gambar 1.4 Tampilan Region Report yang Sumber Datanya adalah Sebuah Collection

7. Selanjutnya kita akan menampilkan struktur keseluruhan dari sebuah collection, maka buat sebuah region baru Report berjenis SQL Report, beri title Struktur Collection dan tambahkan kode SQL Query seperti yang diperlihatkan pada Gambar 1.5. Jika halaman ini kita eksekusi/run, maka akan dihasilkan tampilan seperti pada Gambar 1.6.

Gambar 1.5 SQL Query untuk Menampilkan Keseluruhan Struktur Collection

Gambar 1.6 Struktur Keseluruhan Collection

8. Untuk melakukan perubahan terhadap data yang sudah dimasukkan ke dalam collection, lakukan langkah-langkah berikut ini: a. Hapus process Buat Collection dengan cara klik link process Buat Collection > klik button Delete dan klik tombol Yes untuk melakukan konfirmasi penghapusan. Langkah untuk menghapus process ini harus dilakukan, karena process ini adalah process yang dilaksanakan setiap kali halaman 1 ditampilkan. Padahal process ini adalah process yang melakukan truncate (reset atau mengosongkan) terhadap collection dan mengisi kembali collection yang sudah kosong dengan 5 baris data. Jika process ini tidak dihapus, maka perubahan yang dilakukan terhadap collection tidak akan terlihat, karena setiap kali halaman 1 ditampilkan, isi collection sudah mengalami truncate dan kemudian mengalami penambahan 5 baris data. b. Tambahkan item text box bernama P1_SEQ dengan label No. Sequence ke dalam region Struktur Collection c. Tambahkan item text box bernama P1_C001 dengan label Nilai Baru Kolom 1 ke dalam region Struktur Collection d. Tambahkan button dengan langkah-langkah sebagai berikut:

i. Klik link untuk menambah button > Klik radio button Struktru Collection, agar button dibuat pada region Struktur Collection ii. Klik Next> > Klik radio button Create button in a region position iii. Klik Next> > Klik link [SUBMIT], agar button yang dibuat diberi nama SUBMIT iv. Klik Next> > (Tidak usah lakukan perubahan apa pun pada halaman button template) v. Klik Next> > Pilih Top of Region pada combo box Button Position dan Pilih Left pada combo box Button Alignment vi. Klik Next> > Ketikkan 1 pada text box Branch to Page, agar sesudah button mengalami klik, maka kembali ditampilkan halaman 1. vii. Klik Next> > Klik tombol Create Button e. Jika anda jalankan/eksekusi halaman, maka tampilan region Struktur Collection akan berubah seperti pada Gambar 1.7.

Gambar 1.7 Tampilan Region Struktur Collection Setelah Ditambahkan 2 Item dan 1 Button

9. Tambahkan proses baru dengan langkah-langkah sebagai berikut: a. Klik link untuk menambah proses pada bagian Page Processing (bukan pada Page Rendering) b. Klik Next> > Ketik Update Collection pada text box Name c. Klik Next> > Ketik beberapa baris kode PL/SQL ini ke dalam text box Enter PL/SQL Page Process seperti yang tampak pada Gambar 1.8. Kegunaan kode PL/SQL tersebut akan diuraikan di akhir modul ini.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

if NOT HTMLDB_COLLECTION.COLLECTION_EXISTS ( p_collection_name => 'TABEL') THEN HTMLDB_COLLECTION.CREATE_COLLECTION( p_collection_name => 'TABEL'); end if; if :P1_SEQ IS NULL THEN HTMLDB_COLLECTION.ADD_MEMBER( p_collection_name => 'TABEL', p_c001 => :P1_C001); else HTMLDB_COLLECTION.UPDATE_MEMBER_ATTRIBUTE( p_collection_name p_seq p_attr_number p_attr_value end if;
Gambar 1.8 Kode PL/SQL pada Page Process

=> 'TABEL', => :P1_SEQ, => 1, => :P1_C001);

d. Klik Next> > (Tidak usah lakukan perubahan apa pun pada halaman Success Message) e. Klik Next> > Pilih SUBMIT dari combo box When button pressed. f. Klik tombol Create Process

10. Jika halaman ini kita jalankan/run, kemudian kita mengetikkan 1 pada text box No. Sequence dan mengetikkan Agil pada text box Nilai Baru Kolom 1 serta melakukan klik

pada tombol SUBMIT, maka nilai kolom C001 pada baris 1 akan berubah dari Adi menjadi Agil. Hasil ini ditunjukkan dalam Gambar 1.9.

Gambar 1.9 Tampilan Struktur Tabel Ketika Nilai Kolom 1 Baris 1 Diubah Menjadi Agil

11. Jika kita memasukkan 6 pada text box No. Sequence dan teks Abud pada text box Nilai Baru Kolom 1 serta melakukan klik pada tombol SUBMIT, maka akan ditampilkan pesan kesalahan bahwa di dalam collection tidak terdapat sequence_id=6. Pesan kesalahan tersebut dapat dilihat pada Gambar 1.10.

Gambar 1.10 Pesan Kesalahan yang Muncul Jika Nomor Sequence Tidak Ada Dalam Collection

12. Jika kita melakukan logout dan kemudian kembali melakukan login dengan user HR atau user lain yang anda buat dan kembali menjalankan aplikasi Latihan Collection 1, maka

tampilan yang muncul adalah seperti pada Gambar 1.11, yaitu ketika collection TABEL masih kosong.

Gambar 1.11 Aplikasi Latihan Collection 1 Ketika Collection Masih Kosong

13. Jika kita mengetikkan Zaki pada text box Data Baru untuk Kolom 1 (tanpa mengetikkan apa pun pada text box No. Sequence) serta melakukan klik pada button SUBMIT, maka collection baru dengan nama TABEL akan dibuat dan Zaki akan menjadi data yang disimpan pada kolom C001. Hal ini ditunjukkan pada Gambar 1.12.

Gambar 1.12 Aplikasi Latihan Collection 1 Ketika Zaki Ditambahkan

14. Jika kita kembali melakukan klik pada button SUBMIT (tanpa menambahkan apa pun pada text box No. Sequence) maka Zaki kembali akan ditambahkan menjadi data yang disimpan pada kolom C001. Hal ini ditunjukkan pada Gambar 1.13.

Gambar 1.13 Aplikasi Latihan Collection 1 ketika Zaki Ditambahkan untuk Kedua Kalinya

Untuk mempermudah penjelasan yang berkaitan dengan kode PL/SQL, Gambar 1.8 kembali diulang sebagai Gambar 1.14. Penjelasan terhadap kode program tersebut, adalah sebagai berikut: 1. Baris 1 5: Berguna untuk memeriksa apakah collection yang bernama TABEL sudah dibuat atau belum. Jika belum, maka akan dibuat collection yang bernama TABEL. 2. Baris 6 9: Berguna untuk memeriksa apakah ada teks yang dituliskan pada text box P1_SEQ. Jika tidak terdapat teks apa pun, maka aplikasi menganggap bahwa user ingin menambah sebuah baris baru (data baru). Dengan demikian, aplikasi menambahkan baris baru tersebut dengan prosedur ADD_MEMBER. 3. Baris 10 15: Berguna untuk mengubah data yang tersimpan pada baris X kolom 1 dengan nilai yang terdapat pada text box P1_C001. Nilai baris X diperoleh dari text box P1_SEQ. Artinya, bagian kode PL/SQL ini akan dieksekusi jika text box P1_SEQ tidak bernilai NULL.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

if NOT HTMLDB_COLLECTION.COLLECTION_EXISTS ( p_collection_name => 'TABEL') THEN HTMLDB_COLLECTION.CREATE_COLLECTION( p_collection_name => 'TABEL'); end if; if :P1_SEQ IS NULL THEN HTMLDB_COLLECTION.ADD_MEMBER( p_collection_name => 'TABEL', p_c001 => :P1_C001); else HTMLDB_COLLECTION.UPDATE_MEMBER_ATTRIBUTE( p_collection_name p_seq p_attr_number p_attr_value end if;
Gambar 1.14 Kode PL/SQL pada Page Process

=> 'TABEL', => :P1_SEQ, => 1, => :P1_C001);

REFERENSI: Oracle. 2005. Oracle Database Help System. Oracle. Oracle. 2005. Oracle Database: PL/SQL Users Guide and Reference 10 g Release 2. Oracle.

Anda mungkin juga menyukai