Computer >> Máy Tính >  >> Lập trình >> MySQL

Làm thế nào có thể sử dụng câu lệnh MySQL LOOP trong một thủ tục được lưu trữ?


MySQL cung cấp cho chúng tôi LOOP câu lệnh thực thi một khối mã lặp đi lặp lại cùng với việc sử dụng nhãn vòng lặp linh hoạt hơn. Chúng tôi có hai câu lệnh sau cho phép chúng tôi kiểm soát vòng lặp -

RỜI câu lệnh

Nó cho phép chúng tôi thoát khỏi vòng lặp ngay lập tức mà không cần đợi kiểm tra điều kiện.

Lặp lại câu lệnh

Nó cho phép chúng tôi bỏ qua toàn bộ mã bên dưới nó và bắt đầu một lần lặp mới.

Để chứng minh việc sử dụng LOOP câu lệnh với các thủ tục được lưu trữ, sau đây là một thủ tục được lưu trữ tạo ra một chuỗi với các số chẵn như 2,4,6,8, v.v. -

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)

Bây giờ, chúng ta có thể thấy kết quả bên dưới khi gọi thủ tục này -

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)

Ở đây trong câu truy vấn trên, nếu giá trị của A lớn hơn 10 thì vòng lặp kết thúc do câu lệnh LEAVE. Nếu giá trị của A là một số lẻ thì câu lệnh ITERATE bỏ qua mọi thứ bên dưới nó và bắt đầu một lần lặp mới. Nếu giá trị của A là một số chẵn thì khối trong câu lệnh ELSE sẽ xây dựng chuỗi bằng các số chẵn.