WHILE LOOP 您的 SQL 语法有误;查看与您的 MySQL 服务器版本对应的手册,了解在 '' 附近使用的正确语法

WHILE LOOP 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 ''

这是我的数据库服务器信息

服务器类型:MySQL 服务器版本:5.7.16 - MySQL 社区服务器 (GPL) 协议版本:10

我 运行 下面的代码得到了一条错误消息

CREATE PROCEDURE dowhile()
BEGIN
  DECLARE v1 INT DEFAULT 5;

  WHILE v1 > 0 DO
    SET v1 = v1 - 1;
  END WHILE;
END;

I got an error messate: #1064 - 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 '' at line 3
DELIMITER //

CREATE PROCEDURE dowhile()
BEGIN
  DECLARE v1 INT DEFAULT 5;

  WHILE v1 > 0 DO
    SET v1 = v1 - 1;
  END WHILE;
END
//

DELIMITER ;

试试这个:

DELIMITER $

CREATE PROCEDURE dowhile()

BEGIN
  DECLARE v1 INT DEFAULT 5;

  WHILE v1 > 0 DO
    SET v1 = v1 - 1;
  END WHILE;
END;

DELIMITER ;

您需要临时更改分隔符,以便 MySQL 可以接受一系列语句,而不是在第一个 semi-colon 之后停止。

您需要临时更改分隔符,因为在程序中分隔符分号 ; 用于语句结束。如果我们没有更改分隔符 SQL 则认为过程在两者之间结束并且无法成功编译。

所以在开始程序之前更改分隔符 $$ 并在程序结束时恢复原始分隔符 ;

使用Mysql命令行

尝试下面的代码
DELIMITER $$
DROP PROCEDURE IF EXISTS dowhile$$
CREATE PROCEDURE dowhile()
BEGIN
DECLARE v1 INT DEFAULT 5;
WHILE v1 > 0 DO
SET v1 = v1 - 1;
END WHILE;
END$$
DELIMITER ;

之后您使用

调用过程
call dowhile();