MySQL (MariaDB) while 循环
MySQL (MariaDB) while loop
嘿,
我正在尝试使用我们存储中的货架和货架位置更新 table
房间。有 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
您正在将 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 ;
嘿,
我正在尝试使用我们存储中的货架和货架位置更新 table 房间。有 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
您正在将 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 ;