MySQL中的for循環是一種循環遍歷語句,它可以在遍歷過程中執行一些指定的操作。但是,使用for循環遍歷時需要注意一些坑點。
DELIMITER $$ CREATE PROCEDURE myLoop() BEGIN DECLARE i INT DEFAULT 0; FOR i IN 1..5 DO SELECT i; END FOR; END$$ DELIMITER ;
在上面的代碼片段中,我們定義了一個存儲過程myLoop(),利用for循環來遍歷輸出1到5之間的數字。然而,在實際執行時,該存儲過程會產生以下錯誤:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FOR i IN 1..5 DO SELECT i' at line 4
這是由于MySQL的for循環遍歷語句默認不支持范圍定義方式,并且不支持聲明一個變量來迭代循環,正確的寫法應該是:
DELIMITER $$ CREATE PROCEDURE myLoop() BEGIN DECLARE i INT DEFAULT 0; myloop: LOOP SET i = i + 1; IF i >5 THEN LEAVE myloop; END IF; SELECT i; END LOOP myloop; END$$ DELIMITER ;
通過上面的代碼我們可以看到,我們沒有使用for循環遍歷,而是使用了基于標簽的無限循環(loop),并在循環內部手動控制迭代次數,從而實現了正確的遍歷輸出。