Package
Banyaknya procedure dan/atau function
pada suatu aplikasi memungkinkan procedure
dan/atau function tersebut untuk
sulit diatur bila tidak menggunakan package.
Package adalah kumpulan dari procedure dan/atau function. Tujuan utama digunakannya package adalah untuk mengelompokkan program – program unit ke dalam
kelompok yang lebih umum atau se-tipe agar lebih mudah untuk mengaturnya. Secara
garis beris besar, struktur package
dibagi menjadi dua bagian yaitu package
specification dan package body.
Berikut adalah contoh package
specification dan package body.
Contoh package pertama di atas bernama ‘comm_pkg’ adalah package specification dengan kode
deklarasi ‘CREATE OR REPLACE PACKAGE <nama package>’. ‘v_std_comm’ adalah
variabel bertipe number dengan nilai 0.10, sedangkan ‘reset_comm’ adalah procedure. Contoh kedua adalah package body dari package bernama ‘comm_pkg’, dengan kode deklarasi ‘CREATE OR
REPLACE PACKAGE BODY <nama package>’. Package
body dengan isi satu function
bernama ‘validate’ dan satu procedure
bernama ‘reset_comm’.
Selain bertujuan untuk mempermudah dalam
mengatur procedure dan/atau functions, package juga berfungsi untuk menyembunyikan koding yang berada pada
package body, dan hanya koding pada package specification yang terlihat dan
bisa terakses oleh aplikasi. Berikut adalah bagan mengenai status dari package specification dan package body.
Seperti yang terlihat pada bagan di atas
bahwa, package specification
berstatus public, sedangkan package body
berstatus private. Status tersebutlah yang menentukan mana yang terlihat dan
mana yang tersembunyi. Terlihat dan tidaknya bisa dilihat pada bagan sebelah
kanan. Koding eksternal hanya bisa mengakses package specification, bisa lewat ‘public_var’ dan/atau lewat
‘Procedure A’. ‘private_var’ bisa diakses oleh ‘Procedure A’ dan ‘Procedure B’
(dalam satu package body), sedangkan
‘local_var’ hanya bisa diakses oleh ‘Procedure A’ (dalam satu procedure lokal).
Dari contoh package bernama ‘comm_pkg’
di atas, cara memanggil package adalah ‘comm_pkg.reset_comm(0.15)’ atau ‘<nama
package>.<nama objek di dalam package>(nilai yang dimasukkan)’.
Alur bila contoh
‘comm_pkg.reset_comm(0.15)’ dieksekusi adalah nilai eksternal (0.15) yang
dimasukkan akan masuk ke dalam package
bernama ‘comm_pkg’ pada procedure
yang bernama ‘reset_comm’. Setelah itu, nilai tersebut akan diproses oleh procedure tersebut di dalam package body (lewat parameter
‘p_new_comm’). Di dalam procedure
‘reset_comm’ terdapat function yang
dieksekusi bernama ‘validate’ yang berada dalam satu package body. Nilai pada parameter ‘p_new_comm’ dimasukkan ke dalam
function lewat parameter ‘p_comm’. Function tersebut akan mengembalikan
nilai bertipe Boolean, apakah benar
(true) nilai yang dimasukkan lewat parameter ‘p_comm’ antara 0.0 sampai
maksimum ‘commission_pct’ semua karyawan, yang akan melewati kondisi IF pada procedure. Kondisi pada procedure tersebut adalah, jika benar
maka variabel pada package specification
yang bernilai awal (0.10) isi dengan variabel inputan yang bernama
‘p_new_comm’, jika salah maka keluarkan pesan error.
Tidak ada komentar:
Posting Komentar