Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

วิธีใช้คำสั่ง LOOP ใน MySQL Stored Procedure


MySQL มีคำสั่ง LOOP ที่รันบล็อกโค้ดซ้ำๆ พร้อมความยืดหยุ่นในการใช้ Label ของ Loop เรามีคำสั่ง 2 คำสั่งที่ช่วยควบคุม Loop ดังนี้:

คำสั่ง LEAVE

ช่วยให้เราออกจาก Loop ทันทีโดยไม่ต้องรอตรวจสอบเงื่อนไข

คำสั่ง ITERATE

ช่วยให้เราข้ามโค้ดทั้งหมดภายใต้คำสั่งนี้และเริ่มรอบการวนซ้ำใหม่

เพื่อสาธิตการใช้คำสั่ง LOOP ร่วมกับ Stored Procedure ต่อไปนี้เป็น Stored Procedure ที่สร้างสตริงด้วยเลขคู่ เช่น 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)

ตอนนี้เราสามารถดูผลลัพธ์เมื่อเรียกใช้ Procedure นี้:

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 Loop จะสิ้นสุดลงเนื่องจากคำสั่ง LEAVE หากค่าของ A เป็นเลขคี่ คำสั่ง ITERATE จะข้ามทุกอย่างด้านล่างและเริ่มรอบใหม่ หากค่าของ A เป็นเลขคู่ บล็อกในคำสั่ง ELSE จะสร้างสตริงด้วยเลขคู่