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.
MySQL pada versi 5 telah mengenalkan
fitur store procedure. Store procedure sendiri adalah sebuah procedure
(pernyataan program yang berisi logika sql) yang tersimpan dalam database
server.
Mengapa menggunakan Store Procedure :
Mengapa menggunakan Store Procedure :
- Karena berada dalam database server, logika pemrograman pada aplikasi tidak diperlukan lagi, yang harus dilakukan adalah memanggil store procedure.
- Mereduksi trafik pada jaringan yang mengakses database, karena logika pemrograman di laksanakan oleh database server, bukan oleh client
.
Contoh Kasus Update Stok Produk
Tabel produk :
Tabel produk :
mysql>
select * from produk;
+----------+------+-----------+--------+-------+
|
idproduk | kode | nama | stok | harga |
+----------+------+-----------+--------+-------+
| 1 | P001 | CDR-Blank | 10 |
2500 |
| 2 | P002 | Pensil |
25 | 1300 |
+----------+------+-----------+--------+-------
Akan dibuat sebuah procedure
prod_tambah_stok, dengan diketahui idproduk dan jumlah atau quantity pembelian
produk
mysql>
delimiter //
mysql>
create procedure prod_tambah_stok (in idpro int, in jml int)
-> begin
-> update produk set stok=stok + jml
where idproduk=idpro;
-> end //
mysql>
delimiter ;
Memanggil Store Procedure
Diasumsikan telah di input data incoming untuk produk dengan id = 1 dan jumlah = 30
Diasumsikan telah di input data incoming untuk produk dengan id = 1 dan jumlah = 30
mysql>
call pembelian_produk ( 1,30);
Query
OK, 1 row affected (0.00 sec)
Jika berjalan lancar data produk
dengan idproduk 1 telah terupdate.
mysql>
select * from produk;
+----------+------+-----------+--------+-------+
|
idproduk | kode | nama | stok | harga |
+----------+------+-----------+--------+-------+
| 1 | P001 | CDR-Blank | 40 |
2500 |
| 2 | P002 | Pensil |
25 | 1300 |
+----------+------+-----------+--------+-------+
2
rows in set (0.00 sec)
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.
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".
No comments:
Post a Comment