WHILE
WHILE
is ook een herhalingsstructuur die zorgt dat code of statements achter elkaar kunnen uitgevoerd worden zolang de conditie waar (TRUE
) is.
Syntax
WHILE [conditie] DO
statement(s)
END WHILE
De WHILE
-lus is controleert de conditie voordat het statement wordt uitgevoerd.
Onderstaand schema illustreert dit principe.
Om het principe van de WHILE
-lus te tonen, maken we eerst een nieuwe tabel TimeSlots
aan. Deze stelt alle tijdstippen op een kalender voor.
CREATE TABLE TimeSlots(
Id INT AUTO_INCREMENT PRIMARY KEY,
SlotDate DATE UNIQUE
);
Vervolgens zorgen we via een nieuwe stored procedure AddTimeSlots
dat de zojuist gecreƫerde tabel wordt gevuld met data beginnende vanaf een datum.
USE `aptunes`;
DROP procedure IF EXISTS `AddTimeSlots`;
DELIMITER $$
USE `aptunes`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `AddTimeSlots`(
startDate DATE,
numberOfDays INT
)
BEGIN
DECLARE counter INT DEFAULT 1;
DECLARE currentDate DATE DEFAULT startDate;
WHILE counter <= numberOfDays DO
INSERT INTO TimeSlots (SlotDate)
VALUES
(currentDate);
SET counter = counter + 1;
-- deze functie telt een aantal dagen bij een datum
SET currentDate = DATE_ADD(currentDate, INTERVAL 1 day);
END WHILE;
END$$
DELIMITER ;
In bovenstaande stored procedure gebruiken we de WHILE
-lus.
Zolang de teller kleiner of gelijk is aan het opgegeven aantal dagen, dan zullen data worden toegevoegd aan de gecreƫerde tabel TimeSlots
.
CALL AddTimeSlots('2020-04-19', 90);
Deze uitvoering van de stored procedure AddTimeSlots
geeft volgend resultaat:

Last updated
Was this helpful?