MySQL ให้ วนซ้ำ คำสั่งที่รันบล็อกของโค้ดซ้ำๆ พร้อมกับเพิ่มความยืดหยุ่นของการใช้ป้ายกำกับแบบวนซ้ำ เรามีสองคำสั่งต่อไปนี้ที่ช่วยให้เราควบคุมการวนซ้ำ -
ออกจากคำสั่ง
ทำให้เราสามารถออกจากลูปได้ทันทีโดยไม่ต้องรอตรวจสอบเงื่อนไข
ย้ำคำสั่ง
ซึ่งช่วยให้เราข้ามโค้ดทั้งหมดภายใต้โค้ดดังกล่าวและเริ่มต้นการทำซ้ำใหม่ได้
เพื่อสาธิตการใช้งาน LOOP คำสั่งที่มีขั้นตอนการจัดเก็บ ต่อไปนี้คือขั้นตอนการจัดเก็บซึ่งสร้างสตริงที่มีตัวเลขคู่เช่น 2,4,6,8 เป็นต้น -
mysql> Delimiter // mysql> CREATE PROCEDURE LOOP_loop() -> BEGIN -> DECLARE A INT; -> DECLARE XYZ VARCHAR(255); -> SET A = 1; -> SET XYZ = ''; -> loop_label: LOOP -> IF A > 10 THEN -> LEAVE loop_label; -> END IF; -> SET A = A + 1; -> IF (A mod 2) THEN -> ITERATE loop_label; -> ELSE -> SET XYZ = CONCAT(XYZ,A,','); -> END IF; -> END LOOP; -> SELECT XYZ; -> END // Query OK, 0 rows affected (0.07 sec)
ตอนนี้ เราจะเห็นผลลัพธ์ด้านล่างเมื่อเราเรียกใช้ขั้นตอนนี้ -
mysql> DELIMITER ; mysql> CALL LOOP_loop (); +-------------+ | XYZ | +-------------+ | 2,4,6,8,10, | +-------------+ 1 row in set (0.04 sec) Query OK, 0 rows affected (0.04 sec)
ในแบบสอบถามข้างต้น หากค่าของ A มากกว่า 10 การวนซ้ำจะสิ้นสุดลงเนื่องจากคำสั่ง LEAVE หากค่าของ A เป็นเลขคี่ คำสั่ง ITERATE จะไม่สนใจทุกสิ่งที่อยู่ด้านล่างและเริ่มการวนซ้ำใหม่ หากค่าของ A เป็นจำนวนคู่ บล็อกในคำสั่ง ELSE จะสร้างสตริงที่มีตัวเลขคู่