Perulangan (Loop) Dalam Stored Procedure MySQL – Dalam MySQL terdapat pernyataan loop (perulangan) sama seperti bahasa pemrograman lain. Di MySQL, loop digunakan untuk menjalakan blok SQL secara berulang-ulang sampai statement/kondisi tersebut terpenuhi. Terdapat tiga macam loop dalam MySQL yaitu WHILE, REPEAT, dan LOOP.
WHILE LOOP
Dalam blok while loop akan memeriksa terlebih dahulu expression diawal iterasi apakah expression tersebut TRUE or FALSE. Jika bernilai TRUE maka blok kode dalam loop akan dijalankan sampai expression/kondisi tersebut bernilai FALSE. Tapi jika bernilai FALSE maka tidak akan melakukan loop.
/* Struktur Dasar */
WHILE expression DO
statements
END WHILE;
/* Contoh Penggunaan */
DELIMITER //
CREATE PROCEDURE WhileLoop(IN batas INT)
BEGIN
DECLARE i INT;
DECLARE hasil VARCHAR(20) DEFAULT '';
SET i = 1;
WHILE i <= batas DO
SET hasil = CONCAT(hasil, i, ' ');
SET i = i + 1;
END WHILE;
SELECT hasil;
END //
DELIMITER;REPEAT LOOP
Repeat loop sedikit berbeda dengan while loop. Jika while loop akan memeriksa terlebih dahulu expressionnya apakah bernilai TRUE or FALSE, maka repeat loop adalah kebalikannya dimana akan melakukan mengeksekusi statement atau melakukan perulangan terlebih dahulu baru melakukan pengecekan expressionnya. Perulangan dalam repeat loop akan berhenti jika suatu expression bernilai TRUE dan akan berjalan terus atau melakukan loop jika expression bernilai FALSE.
/* Struktur Dasar */
REPEAT
statements;
UNTIL expression
END REPEAT;
/* Contoh Penggunaan */
DELIMITER //
CREATE PROCEDURE RepeatLoop(IN batas INT)
BEGIN
DECLARE i INT;
DECLARE hasil VARCHAR(20) DEFAULT '';
SET i = 1;
REPEAT
SET hasil = CONCAT(hasil, i, ' ');
SET i = i + 1;
UNTIL i > batas
END REPEAT;
SELECT hasil;
END //
DELIMITER;LOOP, LEAVE, ITERATE
Loop yang terakhir ini berbeda dengan while dan repeat loop. Dalam loop jenis ini terdapat dua pernyataan untuk mengontrol loop yaitu LEAVE dan ITERATE. Pernyataan LEAVE berfungsi untuk keluar dari loop tanpa harus memeriksa expression atau kondisi. Pernyataan ITERATE berfungsi untuk melewati blok kode yang ada dibawahnya dan memulai iterasi baru.
/* Contoh Penggunaan */
DELIMITER //
CREATE PROCEDURE LeaveIterate(IN batas INT)
BEGIN
DECLARE i INT;
DECLARE hasil VARCHAR(20) DEFAULT '';
SET i = 1;
ulang: LOOP
IF i > batas THEN
LEAVE ulang;
END IF;
SET i = i + 1;
IF (i mod 2 != 0) THEN
ITERATE ulang;
ELSE
SET hasil = CONCAT(hasil, i, ' ');
END IF;
END LOOP;
SELECT hasil;
END //
DELIMITER;Happy Coding ^-^


