Stored Procedure pada MySQL
Sama halnya dengan prosedur pada bahasa pemrograman, stored procedure pada SQL mengadung tujuan yang sama, yaitu: mempermudah dalam operasi pengelolaan suatu aksi yang diinginkan. Dalam stored procedure berisi kumpulan syntax-syntax sql yang menghasilkan output tertentu.
KEUNTUNGAN STORED PROCEDURE
- Mengurangi trafik network dan overhead. Pengolahan data tidak dilakukan di sisi aplikasi, melainkan disisi database server. Bayangkan jika disisi aplikasi, akan banyak parsing data yang berulang-ulang ke database server untuk pengolahannya.
- Alasan sekuriti, membatasi akses langsung ke table dari database.
MEMBUAT STORED PROCEDURE
1. Tahap Pertama buat database yang bernama perusahaan seperti syntax berikut:CREATE DATABASE IF NOT EXIST Perusahaan
2. Tahap Kedua, buat tabel yang bernama :pegawai
CREATE TABLE `pegawai` (
`NoKTP` int(15) NOT NULL,
`JenisKel` varchar(10) collate latin1_general_ci NOT NULL,
`Alamat` varchar(25) collate latin1_general_ci NOT NULL,
`Gaji` varchar(10) collate latin1_general_ci NOT NULL,
`NmDepan` varchar(10) collate latin1_general_ci NOT NULL,
`Inisial` varchar(5) collate latin1_general_ci NOT NULL,
`NmBlk` varchar(15) collate latin1_general_ci NOT NULL,
PRIMARY KEY (`NoKTP`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci
3. Tahap Ketiga, isikan data-data ke dalam tabel pegawai :
INSERT INTO `perusahaan`.`pegawai` (
`NoKTP`,
`JenisKel`,
`Alamat`,
`Gaji`,
`NmDepan`,
`Inisial`,
`NmBlk`
)
VALUES
(2147483647,'Perempuan','Jl.Batoh','6000000','Desi','DI','Mawarsari'),
(2147483642,'Laki-laki','Jl.Asrama Haji','9000000','Nur','MH','Hidayat'),
(2147483435,'Laki-laki','Jl.Merdeka','8000000','Dedi','DE','Ruslan'),
(1123487232,'Perempuan','Jl.Pante Pirak','7500000','Lidya','LI','Wati'),
(1102090888,'Laki-laki','Jl.Seulanga','4800000','Jufri','JI','Hidayat');
Sehingga kita akan memiliki table pegawai beserta data-datanya seperti gambar berikut:
4. Dalam percobaan berikut : kita ingin mengetahui data pegawail jenis kelamin laki-laki yang memiliki gaji lebih besar dari 5 juta. Untuk mendapatkan informasi tersebut kita bisa menggunakan syntax SQL tanpa membuat stored procedure seperti berikut :
SELECT * FROM pegawai WHERE JenisKel="Laki-Laki" AND Gaji>5000000;
Sehingga akan ditampilkan output seperti berikut :
5. Sekarang kita akan menerapkan Stored Procedure. Kita akan membuat stored procedure dengan nama gaji_lk_limajuta , kemudian tambah syntax sql diatas seperti berikut :
DELIMITER $$
CREATE
/*[DEFINER = { user | CURRENT_USER }]*/
PROCEDURE `perusahaan`.`gaji_lk_limajuta`()
/*LANGUAGE SQL
| [NOT] DETERMINISTIC
| { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
| SQL SECURITY { DEFINER | INVOKER }
| COMMENT 'string'*/
BEGIN
SELECT * FROM pegawai WHERE JenisKel="Laki-Laki" AND Gaji>5000000;
END$$
DELIMITER ;
6. Sekarang kita telah memiliki prosedur yang bernama gaji_lk_limajuta. Untuk memanggil procedure kita cukup menggunakan syntax call kemudian diikuti nama stored procedure seperti berikut :
CALL gaji_lk_limajuta;
Output yang dihasilkan sama seperti syntax sql diatas tanpa penerapan stored procedure: