Stored Procedure
Stored Procedure
Definisi
Stored procedure adalah prosedur (spt
subprogram dalam bhs pemrograman)
yang disimpan di dalam database. MySQL
mendukung dua jenis “rutin” (subprogram):
– stored procedure yang dapat dipanggil,
– fungsi yang menghasilkan nilai yang dapat
dipakai dalam statemen SQL lain.
Statemen yang menciptakan
strored procedure
CREATE PROCEDURE procedure1 /* nama */
(IN parameter1 INTEGER) /* parameter */
BEGIN /* awal blok */
DECLARE variable1 CHAR(10); /* variabel */
IF parameter1 = 17 THEN /* awal IF */
SET variable1 = 'burung'; /* assignment */
ELSE
SET variable1 = 'kelelawar'; /* assignment */
END IF; /* akhir IF */
INSERT INTO table1 VALUES (variable1); /* statement */
END
Mengapa Strored Procedure
• Dengan stored procedure eksekusi menjadi cepat. Tidak
ada kompilasi. Peningkatan kecepatan datang dari
reduksi lalu-lintas jaringan. Jika ada pekerjaan
pengecekan berulang, looping, multiple statement,
dikerjakan dengan pemanggilan tunggal ke prosedur
yang telah disimpan ke server.
• Stored procedure adalah komponen. Andaikan aplikasi
kemudian ditulis dalam bahasa berbeda, tidak ada
masalah, karena logika berada didalam database bukan
dalam aplikasi.
• Stored procedure adalah portable. Stored procedure
ditulis dalam SQL, Anda bisa jalankan pada setiap
platform dimana MySQL dijalankan disitu.
Memulai klien MySQL
Cek versi:
SHOW VARIABLES LIKE 'version';
atau
SELECT VERSION();
Hasilnya:
mysql> SHOW VARIABLES LIKE 'version';
+---------------+--------------------------------+
| Variable_name | Value |
+---------------+--------------------------------+
| version | 5.0.22-community-max-nt |
+---------------+--------------------------------+
1 row in set (0.01 sec)
Jika kita melihat bilangan ‘5.0.x’, berarti strored procedure akan
bekerja.
Menggunakan database dbjual:
USE dbjual;
mysql> select * from barang;
+------+--------------------+-------+--------+--------+
| kode | nama | jenis | harga | jumlah |
+------+--------------------+-------+--------+--------+
| 001 | Coca cola | F | 7500 | 20 |
| 002 | Mi Sedap rasa Soto | A | 800 | 24 |
| 003 | Kecap ABC | A | 2500 | 20 |
| 004 | Kaos oblong | B | 15000 | 5 |
| 005 | VCD player | C | 235000 | 1 |
| 008 | Ballpoint | D | 2500 | 15 |
| 010 | Celana Jeans | B | 65000 | 5 |
| 011 | Buku Gambar | D | 2000 | 12 |
| 012 | Jaket | B | 50000 | 6 |
+------+--------------------+-------+--------+--------+
9 rows in set (0.09 sec)
Memilih delimiter
mysql> DELIMITER //
Delimiter adalah karakter atau string yang
memberi tahu MySQL bahwa kita telah
selesai menulis statemen SQL.
Sebelumnya, delimiter selalu semicolon
(tanda ;). Hal ini diperlukan karena stored
procedure terdiri atas sejumlah statemen,
dan setiap statemen harus diakhiri dengan
semicolon.
Menciptakan stored procedure
CREATE PROCEDURE p1 () SELECT *
FROM barang; //
p1 = nama prosedur
() = daftar parameter
SELECT * FROM barang; = bodi prosedur
CREATE PROCEDURE p7 ()
BEGIN
SET @a = 2;
SET @b = 10;
SELECT nama, @a * jumlah FROM barang
WHERE jumlah >= @b;
END; //
Variabel
dideklarasikan dengan statemen DECLARE
CREATE PROCEDURE p8 ()
BEGIN
DECLARE a INT;
DECLARE b INT;
SET a = 2;
SET b = 10;
SELECT nama, a * jumlah FROM barang
WHERE jumlah >= b;
END; //
Trigers
CREATE [DEFINER = { user | CURRENT_USER }] TRIGGER
trigger_name trigger_time trigger_event ON tbl_name
FOR EACH ROW trigger_stmt
Keterangan
DEFINER menunjukkan nama user yang mempunyai hak akses untuk
mengakses triger.
Triger_time menunjukkan saat triger tersebut dijalankan. Terdiri dari Before atau
After
Triger_event menandakan saat keadaan bagaimana triger tersebut aktif. Terdiri
dari :
Insert : Triger aktif saat baris baru dimasukkan ke dalam tabel
Update : Triger aktif saat ada baris diperbaharui dimasukkan di dalam tabel
Delete :Triger aktif saat baris dihapus dalam tabel
Contoh
CREATE TABLE test1(a1 INT);
CREATE TABLE test2(a2 INT);
CREATE TABLE test3(a3 INT NOT NULL
AUTO_INCREMENT PRIMARY KEY);