--> Skip to main content

Stored Procedure pada MySQL


Dalam bahasa pemrograman seperti bahasa C, kita sering mendengar subrutin yang terdiri : prosedur (tanpa nilai balik) dan fungsi (memiliki nilai balik).

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:

Comment Policy: Silahkan tuliskan komentar Anda yang sesuai dengan topik postingan halaman ini. Komentar yang berisi tautan tidak akan ditampilkan sebelum disetujui.
Buka Komentar
Tutup Komentar