2017-04-08 31 views
2

嘿,的MySQL(MariaDB的),而環

我想在我們的存儲 空間更新與機架和貨架位置的表。有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 

回答

2

您正在處理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 ; 
+0

非常感謝你,那正是我誤解的地方! – leech911