运行 MySQL 循环时出错

Posted

技术标签:

【中文标题】运行 MySQL 循环时出错【英文标题】:Getting an error while running MySQL loop 【发布时间】: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 $$

【问题讨论】:

【参考方案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中我猜你不需要指定分隔符,可以直接在那里设置。***.com/questions/17481890/…

以上是关于运行 MySQL 循环时出错的主要内容,如果未能解决你的问题,请参考以下文章

批处理文件只运行一次,FOR循环出错

Mysql光标未运行嵌套循环

在执行期间中断循环时出错

出错时再次循环

循环生成子图时出错

For循环在创建文件时出错[重复]