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 ^-^