SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 30.11.2016 03:03:47

Kega
Участник
Зарегистрирован: 30.11.2016
Сообщений: 4

Помогите с MYSQL

Здравствуйте, уважаемые форумчане.
Делаю браузерную игру по уроку. В уроке указан данные код:

create PROCEDURE makefields (param1 int, param2 int)
BEGIN
  DECLARE x int default 1;
  DECLARE y int default 1;
  DECLARE st int default 0;
WHILE y <= 15 DO
  WHILE x <= 15 DO
     SET st = RAND()*10 / (10 + 1) * ((param2 - param1) + param1)+0.5;
     insert into fields (xcoord,ycoord,fid_type) values (x,y,st);
     SET x = x+1;
  END WHILE;
  SET x = 1;
  SET y = y+1;
END WHILE;
END;
 

Он отвечает на генерацию карты.
Но при запросе выдаётся следующая ошибка:
create PROCEDURE makefields (param1 int, param2 int)
BEGIN
  DECLARE x int default 1;
/* Ошибка SQL (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 */
/* Affected rows: 0  Найденные строки: 0  Предупреждения: 0  Длительность  0 of 11 queries: 0,000 sec. */
 

Как лечить?
Заранее благодарен!

Отредактированно Kega (30.11.2016 03:05:09)

Неактивен

 

#2 30.11.2016 03:07:47

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5829

Re: Помогите с MYSQL

смотреть примеры в доке, там написано про delimiter

delimiter //
create PROCEDURE makefields (param1 int, param2 int)
BEGIN
  DECLARE x int default 1;
  DECLARE y int default 1;
  DECLARE st int default 0;
WHILE y <= 15 DO
  WHILE x <= 15 DO
     SET st = RAND()*10 / (10 + 1) * ((param2 - param1) + param1)+0.5;
     insert into fields (xcoord,ycoord,fid_type) values (x,y,st);
     SET x = x+1;
  END WHILE;
  SET x = 1;
  SET y = y+1;
END WHILE;
END//

Неактивен

 

#3 30.11.2016 03:39:29

Kega
Участник
Зарегистрирован: 30.11.2016
Сообщений: 4

Re: Помогите с MYSQL

vasya написал:

смотреть примеры в доке, там написано про delimiter

delimiter //
create PROCEDURE makefields (param1 int, param2 int)
BEGIN
  DECLARE x int default 1;
  DECLARE y int default 1;
  DECLARE st int default 0;
WHILE y <= 15 DO
  WHILE x <= 15 DO
     SET st = RAND()*10 / (10 + 1) * ((param2 - param1) + param1)+0.5;
     insert into fields (xcoord,ycoord,fid_type) values (x,y,st);
     SET x = x+1;
  END WHILE;
  SET x = 1;
  SET y = y+1;
END WHILE;
END//

Спасибо за ответ, но у меня к сожалению получается тогда другая ошибка.

create PROCEDURE makefields (param1 int, param2 int)
BEGIN
  DECLARE x int default 1;
  DECLARE y int default 1;
  DECLARE st int default 0;
WHILE y <= 15 DO
  WHILE x <= 15 DO
     SET st = RAND()*10 / (10 + 1) * ((param2 - param1) + param1)+0.5;
     insert into fields (xcoord,ycoord,fid_type) values (x,y,st);
     SET x = x+1;
  END WHILE;
  SET x = 1;
  SET y = y+1;
END WHILE;
END;
/* Ошибка SQL (1304): PROCEDURE makefields already exists */
/* Affected rows: 0  Найденные строки: 0  Предупреждения: 0  Длительность  0 of 1 query: 0,000 sec. */
 

Неактивен

 

#4 30.11.2016 03:44:35

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5829

Re: Помогите с MYSQL

процедура с таким именем уже существует.
на выбор: или создавайте новую с другим именем, или удаляйте старую.

Неактивен

 

#5 30.11.2016 03:45:40

Kega
Участник
Зарегистрирован: 30.11.2016
Сообщений: 4

Re: Помогите с MYSQL

vasya написал:

процедура с таким именем уже существует.
на выбор: или создавайте новую с другим именем, или удаляйте старую.

И снова спасибо за ответ.
Успел сделать это буквально перед вашим сообщением.
Просто не увидел процедуру...

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson