Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL存储过程语法_Mysql_Stored Procedures - Fatal编程技术网

MySQL存储过程语法

MySQL存储过程语法,mysql,stored-procedures,Mysql,Stored Procedures,我正在尝试创建一个简单的存储过程,它允许我进行大规模插入,但是我遇到了语法问题,无法找出哪里出了问题,尽管将我的过程语法与现有示例进行了比较,结果似乎是正确的 CREATE PROCEDURE populateUserTable() BEGIN DECLARE counter int(10); SET counter = 1; WHILE counter < 101 DO INSERT INTO user(userid) values(counter); SET cou

我正在尝试创建一个简单的存储过程,它允许我进行大规模插入,但是我遇到了语法问题,无法找出哪里出了问题,尽管将我的过程语法与现有示例进行了比较,结果似乎是正确的

CREATE PROCEDURE populateUserTable()
 BEGIN
  DECLARE counter int(10);
  SET counter = 1;
 WHILE counter < 101 DO
  INSERT INTO user(userid) values(counter);
  SET counter = counter + 1
 END WHILE;
END
创建过程populateUserTable()
开始
声明计数器int(10);
设置计数器=1;
而计数器<101
插入用户(userid)值(计数器);
设置计数器=计数器+1
结束时;
结束
在运行时,MYSQL声明: 您的SQL语法有错误;查看与MySQL服务器版本对应的手册,以了解第3行“”附近要使用的正确语法

还有海利特这个家伙:

创建过程populateUserTable()开始声明计数器INT(10)

上面是什么

你用过吗

DELIMITER $$
一开始

试一试

分隔符$$
创建过程populateUserTable()
开始
声明计数器int(10);
设置计数器=1;
而计数器<101
插入用户(userid)值(计数器);
设置计数器=计数器+1
结束时;
结束$$
定界符;

您正在尝试从mysql命令行执行此操作吗?您是否更改了分隔符?因为它分隔了构成存储过程的内容。i、 e.在
CREATE
END$$
之间填充。您不希望它在第一个
处结束
DELIMITER $$
CREATE PROCEDURE populateUserTable()
 BEGIN
   DECLARE counter int(10);
   SET counter = 1;
   WHILE counter < 101 DO
      INSERT INTO user(userid) values(counter);
      SET counter = counter + 1
   END WHILE;
END $$
DELIMITER ;