木槿74138 2023-04-19 15:06 采纳率: 88.9%
浏览 31
已结题

navicat运行循环插入数据一直报错

drop procedure if EXISTS proc_insert_J;
DELIMITER $$
CREATE PROCEDURE proe_insert_J(in args int)
BEGIN
    DECLARE i INT DEFAULT 0:
        start transaction;
        REPEAT
            set i=i+1;
            insert into j(jno,jname,city) values (CONCAT('j',i),CONCAT('项目',i),'济南');
        UNTIL i>=args
        END REPEAT:
    commit;
END
$$
DELIMITER;

call proc_insert_J(100000);

错误

drop procedure if EXISTS proc_insert_J
> OK
> 时间: 0.001s


CREATE PROCEDURE proe_insert_J(in args int)
BEGIN
    DECLARE i INT DEFAULT 0:
        start transaction;
        REPEAT
            set i=i+1;
            insert into j(jno,jname,city) values (CONCAT('j',i),CONCAT('项目',i),'济南');
        UNTIL i>=args
        END REPEAT:
    commit;
END
> 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ':
        start transaction;
        REPEAT
            set i=i+1;
            insert into j(jno,jname,cit' at line 3
> 时间: 0s

我想知道错误出在哪里,望告知

  • 写回答

3条回答 默认 最新

  • 嗝屁小孩纸 2023-04-19 15:23
    关注

    你声明变量i符号应该用分号、开启事务也是用分号,下面是代码

    DROP PROCEDURE IF EXISTS proc_insert_J;
    CREATE PROCEDURE proc_insert_J(in args int)
    BEGIN
        DECLARE i INT DEFAULT 0;
        START TRANSACTION;
        REPEAT
            SET i=i+1;
            INSERT INTO j(jno,jname,city) VALUES (CONCAT('j',i),CONCAT('项目',i),'济南');
        UNTIL i>=args
        END REPEAT;
        COMMIT;
    END;
    

    有问题及时反馈哦

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 5月26日
  • 已采纳回答 5月18日
  • 创建了问题 4月19日