Stored procedure adalah salah satu objek routine yang
tersimpan pada database MySQL dan dapat digunakan untuk menggantikan
berbagai kumpulan perintah yang sering kita gunakan, seperti misalkan
sejumlah row ke table lain dengan filter tertentu.
Stored procedure sangat berguna ketika kita tidak ingin user
mengakses table secara langsung, atau dengan kata lain membatasi hak
akses user dan mencatat operasi yang dilakukan. Dengan demikian resiko
kebocoran dan kerusakan data dapat lebih diminalisir.
Pembuatan Stored Procedure
Kita dapat membuat trigger dengan perintah CREATE PROCEDURE. Berikut adalah syntax lengkapnya :
CREATE
[DEFINER = { user | CURRENT_USER }]
PROCEDURE sp_name (proc_parameter[,...])
[characteristic ...] routine_body
[DEFINER = { user | CURRENT_USER }]
PROCEDURE sp_name (proc_parameter[,...])
[characteristic ...] routine_body
Keterangan :
- sp_name : nama stored procedure.
- proc_parameter : parameter input / output dari stored procedure tersebut (opsional).
- characteristic : menjelaskan karakteristik dari stored procedure (COMMENT, LANGUAGE SQL, dan lain-lain).
- routine_body : kumpulan perintah pada stored procedure tersebut.
- Jika DEFINER dispesifikasikan maka kita memutuskan trigger tersebut dijalankan hanya oleh user tertentu (dalam format penulisan user@host). Jika tidak dispesifikasikan, maka user yang melakukan perubahan (CURRENT_USER) adalah pilihan default.
Contoh Penggunaan
Berikut adalah contoh pembuatan dan penggunaan stored procedure untuk menghapus data berdasarkan "kode produk" untuk tiga table yaitu table "ms_produk", "ms_harga_harian", dan "tr_penjualan".
- Buatlah
satu stored procedure dengan nama HapusProduk, dengan satu argumen
yaitu kode_produk_param bertipe teks (varchar) dengan perintah berikut :DELIMITER |
CREATE PROCEDURE HapusProduk(IN kode_produk_param VARCHAR(12))
BEGIN
DELETE FROM ms_produk WHERE kode_produk = kode_produk_param;
DELETE FROM ms_harga_harian WHERE kode_produk = kode_produk_param;
DELETE FROM tr_penjualan WHERE kode_produk = kode_produk_param;
END;
|
DELIMITER ; - Setelah selesai dieksekusi, pastikan stored procedure tersebut sudah terbentuk di database kita.
- Sebelum
kita mengeksekusi stored procedure tersebut. Kita coba lihat hasil
query untuk produk "PROD-0000002" untuk ketiga table yang disebutkan di
atas. Ini untuk memastikan adanya row untuk produk tersebut.
Add caption - Sekarang
coba panggil stored procedure HapusProduk dengan
parameter "PROD-0000002" dan tunggu beberapa saat sampai eksekusi
selesai.CALL HapusProduk('PROD-0000002');
- Coba
lakukan kembali perintah pada point no. 3 dan terlihat bahwa sudah
tidak terdapat data untuk produk "PROD-0000002" pada ketiga table
tersebut.
- Selesai
Tidak ada komentar:
Posting Komentar