ตามที่รู้ว่า MySQL จัดเตรียมคำสั่ง loop ให้เรา ซึ่งอนุญาตให้เรารันบล็อกโค้ด SQL ซ้ำๆ ตามเงื่อนไข คำสั่ง WHILE loop เป็นหนึ่งในลูปแบบนั้น รูปแบบไวยากรณ์มีดังนี้
WHILE expression DO statements END WHILE
จริงๆ แล้ว WHILE loop ตรวจสอบ expression ที่จุดเริ่มต้นของทุกการวนรอบ หาก expression ประเมินเป็น true MySQL จะรันคำสั่งระหว่าง WHILE และ END WHILE จนกว่า expression จะประเมินเป็น false WHILE loop ตรวจสอบ expression ก่อนรัน statements นั่นคือเหตุผลที่มันเรียกว่า pretest loop
เพื่อสาธิตการใช้ WHILE loop กับ stored procedures ต่อไปนี้เป็นตัวอย่าง
mysql> Delimiter //
mysql> CREATE PROCEDURE While_Loop()
-> BEGIN
-> DECLARE A INT;
-> DECLARE XYZ Varchar(50);
-> SET A = 1;
-> SET XYZ = '';
-> WHILE A <= 10 DO
-> SET XYZ = CONCAT(XYZ,A,',');
-> SET A = A + 1;
-> END WHILE;
-> SELECT XYZ;
-> END //
Query OK, 0 rows affected (0.31 sec)
ตอนนี้ เราสามารถดูผลลัพธ์ด้านล่างเมื่อเราเรียกใช้ procedure นี้
mysql> DELIMITER ; mysql> call While_Loop(); +-----------------------+ | XYZ | +-----------------------+ | 1,2,3,4,5,6,7,8,9,10, | +-----------------------+ 1 row in set (0.03 sec)