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

คำสั่ง MySQL LOOP สามารถใช้ในกระบวนงานที่เก็บไว้ได้อย่างไร?


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 จะสร้างสตริงที่มีตัวเลขคู่