SQL - тройной вложенный при вставке - PullRequest
0 голосов
/ 23 марта 2019

У меня есть этот код для вставки строк в таблицу.Я трижды втирался, но этот код дает мне

error #1064 - bad syntax  close

    BEGIN
            WHILE p <= 5
            BEGIN
                WHILE ra <= 40
            ' on line 7.

Что не так с этим кодом?

 DELIMITER $$

CREATE PROCEDURE proc()
BEGIN
    DECLARE r int DEFAULT 1;
    DECLARE p int DEFAULT 1;
    DECLARE ra int DEFAULT 1;
    WHILE r <= 8 DO

        WHILE p <= 5 DO

            WHILE ra <= 40 DO

                INSERT INTO tabulka (REGAL,POLICE,RADA) VALUES(r,p,ra);
                SET ra = ra + 1;
            END WHILE;
            SET p = p + 1;
        END WHILE;
        SET r = r + 1;
    END WHILE;
END$$
DELIMITER ;

CALL proc();

enter image description here

РЕДАКТИРОВАТЬ: теперь он генерирует только один цикл: enter image description here

Ответы [ 2 ]

3 голосов
/ 23 марта 2019

MySQL использует WHILE DO / END WHILE для своего синтаксиса. Таким образом, хранимая процедура должна выглядеть так:

CREATE PROCEDURE proc()
BEGIN
    DECLARE r int DEFAULT 1;
    DECLARE p int DEFAULT 1;
    DECLARE ra int DEFAULT 1;
    WHILE r <= 8 DO
        WHILE p <= 5 DO
            WHILE ra <= 40 DO
                INSERT INTO tabulka (REGAL,POLICE,RADA) VALUES(r,p,ra);
                SET ra = ra + 1;
            END WHILE;
            SET p = p + 1;
        END WHILE;
        SET r = r + 1;
    END WHILE;
END;

Вот немного rextester .

0 голосов
/ 23 марта 2019

Хорошо, моя ошибка.Я забыл сбросить переменные в 1 после того, как внутренние циклы были сделаны.Спасибо за помощь.

...