Подтвердить что ты не робот

MYSQL объявляет переменные

Я не понимаю, что не так с этим script

BEGIN
DECLARE crs INT DEFAULT 0;

WHILE crs < 10 DO
INSERT INTO `continent`(`name`) VALUES ('cont'+crs)
SET crs = crs + 1;
END WHILE;
END;

Я хочу, чтобы он вставлял 10 значений в континент таблицы, но во второй строке есть ошибка.

4b9b3361

Ответ 1

MySQL не поддерживает выполнение анонимных блоков кода хранимой процедуры.

Вам нужно создать хранимую процедуру, включая этот код, а затем вызвать ее.

Кроме того, вам не хватало запятую в конце ваших инструкций вставки. Я это исправил. Вероятно, вы также захотите использовать concat() вместо + для создания имен, но я оставлю это изменение вам.

Создайте процедуру:

DELIMITER $$

DROP PROCEDURE IF EXISTS insert_ten_rows $$

CREATE PROCEDURE insert_ten_rows () 
    BEGIN
        DECLARE crs INT DEFAULT 0;

        WHILE crs < 10 DO
            INSERT INTO `continent`(`name`) VALUES ('cont'+crs);
            SET crs = crs + 1;
        END WHILE;
    END $$

DELIMITER ;

Вызвать процедуру:

CALL insert_ten_rows();