Заполнение столбца генерированной информацией - MySQL

Узнай цену своей работы

Формулировка задачи:

Хочу заполнить столбец случайными значениями. Создал процедуру, она работает:
INSERT INTO curs1 SET goods =
CASE CEILING(rand()*3)
 WHEN 1 THEN 'красный'
 WHEN 2 THEN 'зелёный'
 WHEN 3 THEN 'синий'
END
Но нужно создать не одно значение а например несколько тысяч. Кладу код в цикл а он не работает, помогите разобраться в чем ошибка.
delimiter //
CREATE PROCEDURE dowhile()
BEGIN
  DECLARE v1 INT DEFAULT 5;
  WHILE v1 > 0 DO
INSERT INTO curs1 SET goods =
    CASE CEILING(rand()*3)
                WHEN 1 THEN 'красный'
                WHEN 2 THEN 'зелёный'
                WHEN 3 THEN 'синий'
    SET v1 = v1 - 1;
END WHILE;
END//
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SET v1 = v1 - 1; END WHILE; END//' at line 10 Если убрать delimiter // то показывает: #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 3

Решение задачи: «Заполнение столбца генерированной информацией»

textual
Листинг программы
DELIMITER //
 
CREATE PROCEDURE dorepeat()
BEGIN
  DECLARE x INT DEFAULT 0;
  REPEAT SET x = x + 1; 
INSERT INTO curs1 SET goods =
CASE CEILING(rand()*3)
 WHEN 1 THEN 'красный'
 WHEN 2 THEN 'зелёный'
 WHEN 3 THEN 'синий'
END;
  UNTIL x > 4 END REPEAT;
END//
 
DELIMITER ;

Объяснение кода листинга программы

  1. Создание процедуры dorepeat
  2. Объявление переменной x типа INT со значением по умолчанию 0
  3. Начало цикла REPEAT
  4. Внутри цикла увеличение значения переменной x на 1
  5. Вставка записи в таблицу curs1 с помощью оператора INSERT INTO
  6. Значение в столбце goods генерируется с помощью оператора CASE и функции CEILING(rand()*3)
  7. Возможные варианты значений для goods это 'красный', 'зелёный', 'синий'
  8. Цикл выполняется пока значение переменной x меньше 5
  9. Конец цикла REPEAT
  10. Восстановление стандартного разделителя

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.846 из 5
Похожие ответы