Definisi
Contoh
Statemen yang menciptakan strored procedure
Stored procedure adalah portable. Stored procedure ditulis dalam SQL, Anda
bisa jalankan pada setiap platform dimana MySQL dijalankan disitu.
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.
Contoh database
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.
p1 = nama prosedur
() = daftar parameter
SELECT * FROM barang; = bodi prosedur
Mengembalikan delimiter:
delimiter ;
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 |
+------+
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; //