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();
这是我的数据库服务器信息
服务器类型: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();