【问题标题】:mysql LOOP not workingmysql 循环不工作
【发布时间】:2013-07-01 19:04:31
【问题描述】:

我通过 HeidiSQL 使用 MySQL 5.6.10。我按照简单的循环运行 hte 并出现语法错误:

    DELIMITER $$
    DROP PROCEDURE IF EXISTS testif $$
    CREATE PROCEDURE testif()
    SET @number_title = 0;
    SET @max = (select count(distinct ctitle) FROM wb_hp_customers.hp_customers_final);
    BEGIN
    label1: LOOP
    IF (@number_title<@max) ITERATE label1;
    END IF;
    @number_title = @number_title + 1;
LEAVE label1;
END LOOP label1;
    END $$  
    DELIMITER ;

    CALL testif();

我得到的错误是:

SQL 错误 (1064):您的 SQL 语法有错误;查看与您的 MySQL 服务器版本相对应的手册,了解在 label1 附近使用的正确语法:LOOP。

有人可以帮忙吗?

谢谢

【问题讨论】:

    标签: mysql loops procedure


    【解决方案1】:

    你好像没有END LOOP label1;在你的代码中。

    这里是对 LOOP 协议的更好解释:http://dev.mysql.com/doc/refman/5.6/en/loop.html

    【讨论】:

    • 它仍然无法正常工作。 IT 是语法错误。 DELIMITER $$ DROP PROCEDURE IF EXISTS testif $$ CREATE PROCEDURE testif() SET number_title = 0; SET max= (select count(distinct ctitle) FROM table_final); BEGIN label1: 循环 number_title = number_title + 1; IF (number_title
    【解决方案2】:

    几个错误:)

    CREATE PROCEDURE testif()
    BEGIN
        SET @number_title = 0;
        SET @max1 = (select count(distinct ctitle) FROM wb_hp_customers.hp_customers_final);
        label1: LOOP
            IF (@number_title<@max1) THEN 
                ITERATE label1;
            END IF;
            SET @number_title := @number_title + 1;
        END LOOP;
    END $$
    

    这会起作用,但要小心无限循环

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-21
      • 2012-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多