Function
Untuk membuat function digunakan
perintah :
- CREATE OR REPLACE FUNCTION (baris ke-1) artinya function akan dibuat, bila sudah ada (exist) maka akan diganti dengan yang baru (replace/overwrite). Nama function pada contoh adalah sum_sals (fungsi untuk menghitung pengeluaran untuk gaji karyawan dari suatu departemen/bagian) dengan parameter masukan/input berupa informasi kode departemen.
- Baris ke-1 berisi parameter-parameter input yaitu nama_parameter tipe_data. Pada contoh di atas adalah (id employees.departement_id%TYPE). Pada PL/SQL anda bisa juga tidak menyebutkan tipe data secara eksplisit namun digantikan dengan tipe data field dari suatu tabel dalam hal ini employees.departement_id%TYPE. Field departement_id pada tabel employee adalah bertipe NUMBER
- Baris ke 2 berisi return value atau nilai kembalian ketika function dipanggil, pada contoh NUMBER.
- Baris ke-3 adalah variable sementara yaitu total bertipe NUMBER untuk menghitung total pengeluaran gaji untuk suatu departemen.
- Baris ke-5 sd 11 adalah syntax PL/SQL untuk menjalankan fungsi tersebut.
Untuk menjalankan Function, tidak
menggunakan EXEC, namun perintah SELECT nama_function(param1, param2, dst) FROM
dual/nama_tabel. Pada contoh di atas dijalankan perintah sum_sals(50) yaitu
menghitung total pengeluaran gaji untuk departemen dengan kode=50, Hasilnya
adalah $ 160.432,-
Trigger
Trigger adalah bentuk statement
PL/SQL pasif, artinya statement tsb akan dieksekusi otomatis ketika terjadi
event/kejadian. Contoh sederhananya, memakai jas hujan adalah sebuah kegiatan
Trigger. Kita akan memakai jas hujan kalau ada kejadian/event hujan.
Pelaksanaan Trigger:
- Trigger bisa eksekusi otomatis sebelum kejadian/event terjadi (BEFORE) atau setelah kejadian (AFTER).
- Trigger disulut karena event DML seperti ada event/kejadian DELETE/INSERT/UPDATE. Selain itu sebenarnya ada Trigger lain selain DML yang akan dibahas pada bagian ke-2
- Trigger bisa terjadi jika Event mengenai suatu baris data [FOR EACH ROW] atau terjadi pada kolom tertentu saja.
- Trigger akan menjalankan suatu statement/perintah pada blok BODY (lihat gambar atas).
Gambar di atas merupakan contoh
implementasi Trigger untuk aktifitas logging (perekaman jejak otomatis). Pada
contoh di atas, awalnya penulis membuat tabel sal_hist yang mencatat aktifitas
perubahan gaji. Kemudian penulis membuat statemen trigger (CREATE OR REPLACE
TRIGGER sal_trig) dengan penjelasan sbb:
- Trigger akan dijalankan setelah ada event/kejadian (AFTER) user melakukan perubahan data (UPDATE) pada tabel employees (lihat baris ke-2).
- Event akan di fire/sulut jika ada perubahan pada suatu baris, tidak peduli kolom mana yang berubah.
- Baris ke-5-8 adalah bagian body yang menjelaskan bagaimana trigger bereaksi. Ketika ada perubahan pada tabel employees (AFTER UPDATE), maka perubahan tersebut langsung tercatat di tabel sal_hist (lihat baris ke-6) yang mencatat informasi ID pegawai, kapan dilakukan perubahan (TIMESTAMP), siapa user yang mengubah (WHO), berapa gaji lama (OLD_SAL) dan berapa gaji terbaru (NEW_SAL).
Selanjutnya tunggu bagian ke-2 yang
akan menjelaskan Function dan Trigger secara lebih spesifik
(kalo penulis sedang menganggur). Terima kasih
No comments:
Post a Comment