Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Vòng lặp trong Stored Procedure MySQL (REPEAT ... UNTIL)

Cú pháp REPEAT ... UNTIL

DELIMITER //
CREATE PROCEDURE ten_thu_tuc(LastValue INT)
BEGIN
    SET @loop = 0;
    REPEAT
        SET @loop = @loop + 1;
        SELECT @loop;
    UNTIL @loop > LastValue
    END REPEAT;
END //
DELIMITER ;

Gọi thủ tục

mysql> CALL do_WhileDemo(10);

Kết quả (11 dòng vì điều kiện > LastValue)

+-------+  | @loop |  +-------+  | 1     |  +-------+
...
+-------+  | 11    |  +-------+

Phân tích logic

  • Khởi tạo @loop = 0
  • Lặp: tăng @loop, in ra, kiểm tra điều kiện
  • UNTIL @loop > LastValue: Dừng khi @loop > 10
  • Vì kiểm tra SAU khi thực thi → in từ 1 đến 11

Các loại vòng lặp trong MySQL

LoạiKiểm tra điều kiệnPhù hợp
REPEAT ... UNTILSau khi chạy (đảm bảo chạy ít nhất 1 lần)Luôn cần chạy 1 lần
WHILE ... DO ... END WHILETrước khi chạyCó thể không chạy lần nào
LOOP ... END LOOPKhông có điều kiện (dùng LEAVE/ITERATE)Logic phức tạp, thoát nhiều điểm

Ví dụ WHILE

CREATE PROCEDURE whileDemo(n INT)
BEGIN
    DECLARE i INT DEFAULT 1;
    WHILE i <= n DO
        SELECT i;
        SET i = i + 1;
    END WHILE;
END

Lưu ý: Dùng biến cục bộ DECLARE trong SP, tránh biến session @var để tránh rò rỉ giữa các lần gọi.