You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL Workbench 8.0编写循环加载数据存储过程报错如何解决

报错原因

代码存在3个核心问题,直接导致执行失败:

  • 字符串拼接逻辑错误:MySQL不支持使用+拼接字符串,+仅作为数值运算符使用。原代码中'Car-'+CAST(counter as varchar)会被解析为数值加法,字符串'Car-'转数值结果为0,最终无法得到预期的Car-数字格式字符串。
  • INSERT语句列数不匹配:Cars表共包含Id、Name、Price3个字段,但原INSERT语句仅传入2个值,即使Id是自增主键,未显式指定插入字段列表时会触发列计数不匹配报错。
  • 事务逻辑不完整:代码中开启了事务但未编写COMMIT语句,即使插入逻辑执行成功,数据也不会持久化到表中。另外WHILE循环内多余包裹的BEGIN...END块属于无意义语法冗余,不会直接报错但没有存在必要。
修正后可直接运行的代码
DROP TABLE IF EXISTS Cars;
CREATE TABLE Cars (
Id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
Name CHAR (50) NOT NULL,
Price INT
);

DROP PROCEDURE IF EXISTS load_car;

DELIMITER $$
CREATE PROCEDURE load_car()
    BEGIN
        DECLARE counter INT DEFAULT 1;
        START TRANSACTION;
        WHILE counter <= 10 DO
            INSERT INTO Cars (Name, Price)
            VALUES 
            (CONCAT('Car-', counter), counter*100);
            SET counter = counter + 1;
        END WHILE;
        COMMIT;
    END
$$
DELIMITER ;

-- 执行存储过程
CALL load_car();
效果验证

存储过程执行完成后,运行SELECT * FROM Cars;即可查询到10条正确插入的记录:Id自增从1到10,Name字段为Car-1到Car-10,Price字段对应为100到1000。

内容的提问来源于stack exchange,提问作者Halima Asrar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.01 02:57:21