You are on page 1of 5

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. Contoh Statemen yang menciptakan strored procedure
CREATE PROCEDURE procedure1 (IN parameter1 INTEGER) BEGIN DECLARE variable1 CHAR(10); IF parameter1 = 17 THEN SET variable1 = 'burung'; ELSE SET variable1 = 'kelelawar'; END IF; INSERT INTO table1 VALUES (variable1); END /* /* /* /* /* /* /* /* /* /* nama */ parameter */ awal blok */ variabel */ awal IF */ assignment */ assignment */ akhir IF */ statement */ akhir blok */

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) mysql> select version(); +-------------------------+ | version() | +-------------------------+ | 5.0.22-community-max-nt | +-------------------------+ 1 row in set (0.08 sec) Jika kita melihat bilangan 5.0.x, berarti strored procedure akan bekerja.

Contoh database
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 Mengembalikan delimiter: delimiter ; Memanggil stored procedure mysql> call p1(); +------+--------------------+-------+--------+--------+ | 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.36 sec) menghapus procedure mysql> drop procedure p1;

Parameter
1. Tanpa parameter CREATE PROCEDURE p5 () ... 2. Satu parameter input CREATE PROCEDURE p5 ([IN] nama tipe-data) ... 3. Satu parameter output

CREATE PROCEDURE p5 (OUT nama tipe-data) ... 4. Satu parameter untuk input dan output CREATE PROCEDURE p5 (INOUT nama tipe-data) ... Contoh IN mysql> CREATE PROCEDURE p5(p INT) SET @x = p // Query OK, 0 rows affected (0.00 sec) mysql> CALL p5(12345)// Query OK, 0 rows affected (0.00 sec) mysql> SELECT @x// +-------+ | @x | +-------+ | 12345 | +-------+ 1 row in set (0.00 sec) Contoh OUT mysql> CREATE PROCEDURE p6 (OUT p INT) -> SET p = -5 // mysql> CALL p6(@y)// mysql> SELECT @y// +------+ | @y | +------+ | -5 | +------+ p adalah nama parameter output. Saat pemanggilan, variabel sesi @y dilewatkan. Dalam bodi prosedur, parameter diisi dengan -5. Efeknya sama dengan statemen SET @y = -5;.

Gabungan statemen
diapit dengan blok begin ... end
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; //

You might also like