Пакетная вставка SQL-запроса в MySQL - PullRequest
2 голосов
/ 26 мая 2011

Я просто получаю ошибку 1064. Я искал, как делать циклы while, затем объявлять локальные переменные и т. Д., И я не вижу, что я делаю неправильно.Я пытался сделать это без ";"и я устал устанавливать разделитель как "|"уметь использовать ";"в качестве разделителя между строками (я читал что-то где-то, что вроде как может быть способ сделать это? ..)

Я пытаюсь сделать этот запрос на PhpMyAdmin и моя версия MySql 5.1.36

Я не собираюсь объяснять, что я пытаюсь, так как считаю, что это легко понять, просто прочитав мой запрос ниже.

BEGIN 
DECLARE v1 INT DEFAULT 0;
DECLARE v2 VARCHAR(10); 
WHILE v1 < 20 DO
SET v2 = CONCAT('Test ', CAST(v1 AS CHAR(2)));
INSERT INTO news(title,date, message) VALUES(v2, NOW(), v2);
SET v1 = v1 + 1;
END WHILE; 
END;

Ответы [ 3 ]

0 голосов
/ 26 мая 2011

Изменение

DECLAREv2 VARCHAR(10); 

до

DECLARE v2 VARCHAR(10); 
0 голосов
/ 26 мая 2011

MySql разрешает только составные операторы, использующие тег BEGIN...END внутри хранимых программ.

Из Документов :

синтаксис BEGIN ... END используется для написание составных утверждений, которые могут появляются в хранимых программах

0 голосов
/ 26 мая 2011

Первое, что я вижу, это небольшая синтаксическая ошибка в параметрах CAST.

У вас есть: CAST (v1 ASCHAR (2))

Вам нужно: CAST (v1 AS CHAR (2))

См. http://dev.mysql.com/doc/refman/5.0/en/cast-functions.html#function_cast

...