2017-04-08 14 views
2

Hey,MySQL (MariaDB) while-Schleife

Ich versuche, einen Tisch mit Gestell und Regal Stellen in unserem Lager Raum zu aktualisieren. es gibt 15 regale und jedes regal hat 5 regale. Ich mache die Schleife bis 20, um einige zusätzliche Orte hinzuzufügen, wenn wir mehr Regale haben. Bis jetzt ist dies die Prozedur, die ich versucht habe zu tun, aber; Ich erhalte einen Syntaxfehler in der Nähe meines ersten END IF;

Hier ist meine Aussage:

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 

Antwort

2

Sie bearbeiten if als Funktion, und nicht als eine Erklärung.

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

Vielen Dank, das war genau das, was ich falsch verstanden habe! – leech911