21
我不明白什麼是錯的這個腳本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;
我希望插入10個值到表大陸,但有一個錯誤在第二條線。
我不明白什麼是錯的這個腳本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;
我希望插入10個值到表大陸,但有一個錯誤在第二條線。
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();
聲明變量在MySQL與@
並用:=
SET @crs = 0; // declaration
--here your query
@crs := @crs+1 // assignment
參考
'BEGIN DECLARE CRS INT; SET @crs = 0; WHERE crs <10 DO INSERT INTO \ continent \'(\'name \')VALUES('cont'+ @ crs) SET @crs = crs + 1; END WHILE; END; '它不是以這種方式工作 – NiCU 2012-07-16 13:39:07
分配':=' – diEcho 2012-07-16 13:40:51
我得到的錯誤說:#1064 - 你的SQL語法錯誤;檢查與你的MySQL服務器版本相對應的手冊,在'DECLARE @crs INT'附近使用正確的語法, – NiCU 2012-07-16 13:43:42