首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL (MariaDB)并发循环

MySQL (MariaDB)并发循环
EN

Stack Overflow用户
提问于 2017-04-08 01:44:54
回答 1查看 7.9K关注 0票数 2

嘿,你们好,

我正试着在我们的储藏室里更新一张摆着架子和架子的桌子。有15个货架,每个货架有5个货架。我运行循环到20,以增加一些额外的位置,当我们得到更多的货架。到目前为止,这是我一直在尝试torun的过程,但是,我得到了一个语法错误接近我的第一个终点,如果;

以下是我的发言:

代码语言:javascript
复制
    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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-08 01:48:18

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

代码语言:javascript
复制
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 ;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43289304

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档