Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.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_Sql_Database_Stored Procedures - Fatal编程技术网

MySQL集错误

MySQL集错误,mysql,sql,database,stored-procedures,Mysql,Sql,Database,Stored Procedures,每次我尝试运行这个查询时,我都会在附近发现一个MySQL错误 'BEGIN SET @v1 = 60000' at line 3 我不知道我做错了什么,我感谢你的帮助 CREATE PROCEDURE insertgear BEGIN SET @v1 = 60000; WHILE v1 < 61000 DO <insert statement> SET v1 = v1 + 1 END WHILE; END CALL insertgea

每次我尝试运行这个查询时,我都会在附近发现一个MySQL错误

'BEGIN SET @v1 = 60000' at line 3
我不知道我做错了什么,我感谢你的帮助

CREATE PROCEDURE insertgear

BEGIN
   SET @v1 = 60000;
   WHILE v1 < 61000 DO
     <insert statement>
     SET v1 = v1 + 1
   END WHILE;
END

CALL insertgear
创建过程insertgear
开始
设置@v1=60000;
而v1<61000
设置v1=v1+1
结束时;
结束
调用insertgear

*编辑我从60000开始的原因是因为我在插入中使用了该数字作为ID

您需要声明
v1
并稍微整理一下您的语法,例如

CREATE PROCEDURE insertgear()

BEGIN
    DECLARE v1 int;
    SET v1 = 60000;
    WHILE v1 < 61000 DO
        <insert statement>
        SET v1 = v1 + 1;
    END WHILE;
END
创建过程insertgear()
开始
声明v1 int;
设置v1=60000;
而v1<61000
设置v1=v1+1;
结束时;
结束

首先需要声明,我会使用:=since=作为查询中的比较运算符进行计算。并不是说set v1=6000是一个查询,而是为了一致性。这似乎在sqlfiddle中起作用

创建过程insertgear()
开始
声明v1 int默认值为1;
设置v1:=60000;
而v1<61000
设置v1:=v1+1;
结束时;
结束
//
调用insertgear();

谢谢,添加了这些更改,但是仍然得到一个错误
在第3行开始声明@v1 int
前缀用于mysql中的会话变量,我已经相应地修改了答案谢谢你的回复,我得到了与我发布@TobyLL comments相同的错误你现在还明白了吗?这似乎很管用。
CREATE PROCEDURE insertgear()
BEGIN
    DECLARE v1 int DEFAULT 1;
    SET v1 := 60000;

    WHILE v1 < 61000 DO
        <insert stm>
        SET v1 := v1 + 1;
    END WHILE;

END
//

call insertgear();