2017-09-01 197 views
-1

試圖實現在mysql中一個簡單的嵌套循環程序:MySQL的存儲過程語法錯誤

BEGIN 
    DECLARE days_cnt INT; 

    SET days_cnt = 0; # Start today 
    WHILE days_cnt < 10 DO 

     WHILE 1 DO 

     END WHILE; 

     SET days_cnt = days_cnt + 1; 
    END WHILE; 

END 

這是給通用1064錯誤約附近的語法錯誤「END WHILE;」

任何想法?

回答

0

您可能需要重新定義分隔符(分號),因爲它在存儲的程序中。按照Defining Stored Programs

如果您使用mysql客戶端程序定義包含分號存儲的程序,一個問題出現了。默認情況下,mysql本身將分號識別爲語句分隔符,因此您必須臨時重新定義分隔符以使mysql將整個存儲的程序定義傳遞給服務器。

所以你CREATE PROCEDURE語句之前添加以下(它可以比一個分號之外的任何字符(S)):delimiter $$

然後是CREATE PROCEDURE結束後重置它:delimiter ;

否則,我不確定MySQL如何處理嵌套在外部WHILE循環中的空的WHILE循環語句(WHILE 1 DO END部分)。您可能需要刪除該內容或處理該內部循環中所需的任何內容。

0

這個循環必須有一個聲明在它的內部:

WHILE 1 DO 

END WHILE;