Variabel lokal adalah variable yang hanya dapat digunakan dalam isi prosedur tersimpan. Variabel lokal tidak dapat digunakan selain dalam isi prosedur tersimpan, diantara keyword BEGIN dan END.
Untuk mendeklarasikan variabel lokal menggunakan keyword DECLARE. DECLARE nama_variabel[, ...] tipe [DEFAULT nilaidefault]
Contoh :
mysql> DELIMITER //
mysql> CREATE PROCEDURE prosedur3(a SMALLINT, OUT b INT)
-> BEGIN
-> DECLARE e INT;
-> SET e=a+a;
-> SET b=e;
-> END
-> // Query OK, 0 rows affected (0.01 sec)
mysql> DELIMITER ;
Pada contoh diatas dideklarasikan variabel lokal bernama e dengan tipe data INT. Variabel e tersebut hanya digunakan diantara keyword BEGIN dan END.
Flow Control
Keyword Flow control juga dapat ditambahkan pada pada prosedur tersimpan. Beberapa keyword Flow control yang dapat digunakan antara lain
- IF
IF digunakan untuk menyeleksi beberapa kondisi nilai.
- CASE WHEN
Perintah CASE WHEN bekerja hampir sama seperti perintah IF yang
digunakan untuk menyeleksi beberapa kondisi nilai.
- LOOP, LEAVE dan ITERATE
Perintah LOOP digunakan untuk mengulang perintah secara terus
menerus sampai menemui perintah LEAVE.
[label_awal:] LOOP
Kumpulan_perintah
END LOOP [label_akhir]
Perintah LOOP diawali dan diakhiri dengan karakter label. Perintah LOOP akan terus mengulang perintah yang terdapat dalam kumpulan_perintah, dan untuk menghentikan pengulangan perintah yang terjadi di dalam LOOP menggunakan perintah LEAVE, sdangkan perintah ITERATE digunakan untuk meneruskan perintah.
- REPEAT
Sama seperti LOOP perintah REPEAT digunakan untuk mengulang
sebuah perintah.
[label_awal] REPEAT
Kumpulan_perintah UNTIL
kondisi END REPEAT [label_akhir]
Perintah REPEAT akan terus mengulang perintah sampai nilai dari
kondisi keyword UNTIL terpenuhi.
Contoh penggunan REPEAT :
Label1: REPEAT
SET b = b+1; UNTIL b > a END REPEAT label1;
Perintah REPEAT diatas akan mengulang perintah SET b = b+1
sampai nilai dari variabel b lebih besar daripada nilai variabel a.
- WHILE
WHILE bekerja hampir sama dengan REPEAT,
tetapi dalam perintah WHILE, kondisi disimpan di bagian awal.
Perintah ini berbeda dengan REPEAT yang disimpan di bagian akhir
dan mungkin akan menghasilkan hasil yang berbeda.
[label_awal:] WHILE kondisi DO
Kumpulan_perintah
END WHILE [label_akhir]
Contoh penggunaan perintah WHILE Label1:
WHILE b > a DO
SET b = b + 1; END WHILE label1;
Perintah WHILE akan terus mengulang perintah SET b = b+1;
sampai nilai dari variabel b lebih besar daripada nilai dari variabel a.
Contoh penggunaan flow control pada prosedur tersimpan :
mysql> DELIMITER //
mysql> CREATE PROCEDURE prosedur4(a INT, OUT b INT)
-> BEGIN
-> labell: LOOP
-> SET a = a + 2 ;
-> IF a < 16 THEN ITERATE labell;
-> END IF;
-> LEAVE labell;
-> END LOOP labell;
-> SET b = a;
-> END
-> // Query OK, 0 rows affected (0.03 sec)
mysql> DELIMITER ;
Perintah LOOP diatas akan terus mengulang perintah SET a = a + 2 sampai nilai dari variabel a bernilai 16.
Terima kasih, semoga bermanfaat.
No comments:
Post a Comment