我不知道这个脚本有什么问题
BEGIN
DECLARE crs INT DEFAULT 0;
WHILE crs < 10 DO
INSERT INTO `continent`(`name`) VALUES ('cont'+crs)
SET crs = crs + 1;
END WHILE;
END;
我希望它将10个值插入表大陆,但第二行有错误。
答案 0 :(得分:39)
使用 @
在MySQL中声明变量,并使用 :=
SET @crs = 0; // declaration
--here your query
@crs := @crs+1 // assignment
参考
答案 1 :(得分:31)
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 ;
调用程序:
CALL insert_ten_rows();