2017-09-16 111 views
1

我試圖在MySQL v5.7中使用WHILE循環,並且不斷收到語法錯誤。我一直無法確定問題。根據the documentation,語法看起來正確。MySQL 5.7無法在簡單的WHILE語句中發現錯誤

我發現了一個線程here,暗示將該語句包裝在DELIMITER中,但這也不起作用。該代碼是:

SET @counter = 1; 

WHILE (@counter < 2) DO 
    SELECT @counter; 
    @counter = @counter + 1; 
END WHILE 

和錯誤消息是:

ERROR 1064 (42000) at line 22: 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 'WHILE (@counter < 2) DO SELECT @counter' at line 1

我缺少什麼?

+0

你是如何使用DELIMITER向我們展示的。 –

+0

是的,我在'END WHILE'之後試過並且沒有分號。當使用分隔符時,我在上面的塊前加上'DELIMITER //',之後加上'/''(帶和不帶分號)。 – Jonathan

回答

4

據我記得,你不能像這樣使用WHILE LOOP。您必須將其放入存儲過程中,如下所示:

CREATE PROCEDURE mysp() 
BEGIN 
    DECLARE counter int DEFAULT 1; 
    WHILE counter < 2 DO 
     SET counter = counter + 1; 
    END WHILE; 
END 
+0

別忘了'DELIMITER' – tadman

+0

這是迄今爲止最接近的。上面的代碼,與DELIMITER,給了我一個不同的錯誤:錯誤1044(42000)在第18行:訪問被拒絕用戶'run_OT1FwXgLf31'@'localhost'到數據庫'run_ot1fwxglf31'看起來我不能在此創建一個過程環境 :-( – Jonathan

0

請嘗試以下代碼。它在我的MySQL上成功運行5.7

DELIMITER // 

CREATE PROCEDURE mysp() 
BEGIN 
    DECLARE counter INT; 
    SET counter = 1; 

    label1: WHILE counter < 2 DO 
    SELECT counter; 
    SET counter = counter + 1; 
    END WHILE label1; 
END; // 

DELIMITER ;