MySQL在建立存儲過程的時候,語法正確卻提示You have an error in your SQL syntax

  我在使用MySQL工具編寫MySQL存儲過程的時候,明明語法正確,可是卻一直提示You have an error in your SQL syntax。工具

  好比下面一段代碼spa

 1 CREATE PROCEDURE demo_pro()
 2 BEGIN
 3     DECLARE doned BOOLEAN;
 4     DECLARE addr varchar(20);
 5     DECLARE demo_cur CURSOR FOR SELECT detail from address;
 6     DECLARE CONTINUE HANDLER FOR NOT FOUND SET doned = True;
 7     SET doned = False;
 8     OPEN demo_cur;
 9     demo_cur:LOOP
10         FETCH demo_cur into addr;
11         IF doned THEN
12             LEAVE demo_cur;
13         ELSE
14             insert into demo(demo_value) values(addr);
15         END IF;
16     END LOOP;
17     CLOSE demo_cur;
18 END;

  找了半天才找到解決方案,原來不是語法的錯誤,是MYSQL語法解析器的緣由。MYSQL 解析器解析遇到「;」分號,就結束本次執行,因此就形成了不少語法錯誤。解決方案是:code

 1 DELIMITER |  #結束符號,能夠根據本身的需求,改爲 $也能夠
 2 CREATE PROCEDURE demo_pro()
 3 BEGIN
 4     DECLARE doned BOOLEAN;
 5     DECLARE addr varchar(20);
 6     DECLARE demo_cur CURSOR FOR SELECT detail from address;
 7     DECLARE CONTINUE HANDLER FOR NOT FOUND SET doned = True;
 8     SET doned = False;
 9     OPEN demo_cur;
10     demo_cur:LOOP
11         FETCH demo_cur into addr;
12         IF doned THEN
13             LEAVE demo_cur;
14         ELSE
15             insert into demo(demo_value) values(addr);
16         END IF;
17     END LOOP;
18     CLOSE demo_cur;
19 END;|
20 DELIMITER ;
相關文章
相關標籤/搜索