Хранимая процедура в MySQL - PullRequest
       5

Хранимая процедура в MySQL

3 голосов
/ 02 сентября 2011

Я запускаю следующую команду в PHPMyAdmin:

DELIMITER #
CREATE PROCEDURE addid()
BEGIN
  DECLARE done INT DEFAULT 0;
  DECLARE a,b FLOAT DEFAULT 0;
  DECLARE c,d INT DEFAULT 0;
  DECLARE cur1 CURSOR FOR SELECT time FROM results;
  DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;

OPEN cur1;
  read_loop: LOOP
    FETCH cur1 INTO a;
    IF done THEN
      LEAVE read_loop;
    IF a - b > 60 THEN 
      SET c = c+1;
    ELSE
      UPDATE results SET uid=c WHERE time=a;
    END IF;
    SET b = a;
  END LOOP;
CLOSE cur1;
END#
DELIMITER ;
CALL addid();

Может быть, это будет делать то, что я хочу, а может и нет.Но я не знаю, потому что я не могу это назвать.

Я получаю следующую ошибку

#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 'LOOP; CLOSE cur1; END# call addid()' at line 20

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

Я впервые использую хранимые процедуры, так что это, вероятно, что-то глупое.Я использую MySQL 5.0.7.

1 Ответ

2 голосов
/ 02 сентября 2011

Только сейчас я увидел, что проблема в вашем коде ....

IF done THEN
      LEAVE read_loop;
END IF;

Endif отсутствует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...