【问题标题】:Getting an error while running MySQL loop运行 MySQL 循环时出错
【发布时间】:2015-05-30 21:17:42
【问题描述】:

我正在尝试在 phpMyAdmin 中运行 mysql 循环,以便同时为多个产品添加价格记录。运行此查询时,我收到以下错误:

1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 11 行的“$$”附近使用正确的语法

知道为什么会这样吗?

DELIMITER $$
CREATE PROCEDURE doiterate()
BEGIN
DECLARE p1 INT Default 0;
  label1: LOOP
    SET p1 = p1 + 1;
    IF p1 < 44 THEN
        INSERT INTO `price`(`product`, `site`, `amount`)
        VALUES (p1,'10','12.99');
    END IF;
  END LOOP label1;
END $$

【问题讨论】:

    标签: mysql sql phpmyadmin


    【解决方案1】:

    你有一些语法问题,需要在最终结束之前结束循环。

    DELIMITER $$
    CREATE PROCEDURE doiterate()
    BEGIN
    DECLARE p1 INT Default 0;
      label1: LOOP
        if p1 = 44 then 
          LEAVE  label1;
        end if;
    
        INSERT INTO `price`
         (`product`, `site`, `amount`)
         VALUES 
         (p1,'10','12.99');
        SET p1 = p1 + 1;
      END LOOP; 
    END$$
    

    这里是mysql cli中的一个测试

    mysql> DELIMITER $$
    mysql> CREATE PROCEDURE doiterate()
        -> BEGIN
        -> DECLARE p1 INT Default 0;
        ->   label1: LOOP
        ->     if p1 = 44 then 
        ->       LEAVE  label1;
        ->     end if;
        -> 
        ->     INSERT INTO `price`
        ->      (`product`, `site`, `amount`)
        ->      VALUES 
        ->      (p1,'10','12.99');
        ->     SET p1 = p1 + 1;
        ->   END LOOP; 
        -> END$$
    Query OK, 0 rows affected (0.00 sec)
    

    【讨论】:

    • 谢谢,但是我现在得到 #1308 - 离开没有匹配的标签:loop_label
    • 抱歉,我有一个错字已修正。
    • 我现在遇到与以前相同的错误 - 第 15 行出现语法错误
    • 我刚刚在 mysql cli 中测试过,效果很好。您是在尝试 mysql cli 还是其他地方?
    • 嗯,在phpmyadmin中我猜你不需要指定分隔符,可以直接在那里设置。stackoverflow.com/questions/17481890/…
    猜你喜欢
    • 2019-01-19
    • 2013-07-21
    • 1970-01-01
    • 2020-07-02
    • 2016-02-14
    • 2011-12-19
    • 1970-01-01
    • 1970-01-01
    • 2018-05-01
    相关资源
    最近更新 更多