MYSQL声明变量

NiC*_*iCU 22 mysql

我不明白这个脚本有什么问题

BEGIN
DECLARE crs INT DEFAULT 0;

WHILE crs < 10 DO
INSERT INTO `continent`(`name`) VALUES ('cont'+crs)
SET crs = crs + 1;
END WHILE;
END;
Run Code Online (Sandbox Code Playgroud)

我希望它将10个值插入表大陆,但第二行有错误.

diE*_*cho 39

在MySQL中声明变量@并赋值:=

SET @crs = 0; // declaration
--here your query
@crs := @crs+1 // assignment
Run Code Online (Sandbox Code Playgroud)

参考

  • 我得到的错误说:#1064 - 您的SQL语法有错误; 查看与您的MySQL服务器版本对应的手册,以便在"DECLARE @crs INT"附近使用正确的语法 (5认同)

Ike*_*ker 33

MySQL不支持执行存储过程代码的匿名块.

您需要创建包含该代码的存储过程,然后调用它.

此外,您在插入语句的末尾缺少分号.我修好了.您也可能想使用concat()而不是+来生成名称,但我会将更改留给您.

创建程序:

DELIMITER $$

DROP PROCEDURE IF EXISTS insert_ten_rows $$

CREATE PROCEDURE insert_ten_rows () 
    BEGIN
        DECLARE crs INT DEFAULT 0;

        WHILE crs < 10 DO
            INSERT INTO `continent`(`name`) VALUES ('cont'+crs);
            SET crs = crs + 1;
        END WHILE;
    END $$

DELIMITER ;
Run Code Online (Sandbox Code Playgroud)

调用程序:

CALL insert_ten_rows();
Run Code Online (Sandbox Code Playgroud)