【问题标题】:MySQL (MariaDB) while loopMySQL (MariaDB) while 循环
【发布时间】:2017-09-03 11:57:38
【问题描述】:

你好,

我正在尝试用我们存储中的机架和搁板位置更新一张桌子 房间。有15个架子,每个架子有5个架子。我将循环运行到 20,以便在我们获得更多货架时添加一些额外的位置。到目前为止,这是我一直在尝试运行的程序,但是;我的第一个 END IF 附近出现语法错误;

这是我的声明:

    drop PROCEDURE if exists updateLocations;
    DELIMITER //
    CREATE PROCEDURE updateLocations()
    begin
    DECLARE rack INT default 1;
    DECLARE shelf INT default 1;
    WHILE rack<21 DO
        insert into tblStorageLocations values ("", rack, shelf);
            IF (shelf=5, SET rack=rack+1, set rack=rack);
            END IF;
            IF (shelf<5, SET shelf=shelf+1, set shelf=1);
            END IF;
            END WHILE;
END;
    //
    DELIMITER ;


    ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'IF;

    IF (shelf<5, SET shelf=shelf+1, set shelf=1);
    END IF;
    END WHILE' at line 8

【问题讨论】:

    标签: mysql sql mariadb lamp


    【解决方案1】:

    您正在将 if 作为函数而不是语句来处理。

    drop PROCEDURE if exists updateLocations;
    DELIMITER //
    
    CREATE PROCEDURE updateLocations()
    BEGIN
        DECLARE rack INT default 1;
        DECLARE shelf INT default 1;
        WHILE rack < 21 DO
            INSERT INTO tblStorageLocations 
                VALUES ('', rack, shelf);
            IF shelf = 5 THEN
                SET rack = rack + 1;
            END IF;
            IF shelf < 5 THEN
                SET shelf = shelf + 1;
            ELSE 
                SET shelf = 1;
            END IF;
        END WHILE;
    END;
    //
    DELIMITER ;
    

    【讨论】:

    • 非常感谢,这正是我的误会!
    猜你喜欢
    • 2020-05-10
    • 2011-11-30
    • 2021-12-28
    • 1970-01-01
    • 2022-01-07
    • 2013-03-11
    • 2015-01-14
    • 2016-11-30
    • 2018-10-04
    相关资源
    最近更新 更多