Ошибка разделителя хранимых процедур MySQL

0

Я пытаюсь реализовать хранимую процедуру для создания моментального снимка пользовательских балансов, и я всегда получаю сообщение об ошибке в строке 5, что синтаксис неправильный, и я не нашел ответа на то, что не так с этим синтаксисом:

DROP PROCEDURE IF EXISTS createSnapshot;

DELIMITER //

CREATE PROCEDURE createSnapshot()
BEGIN
INSERT INTO balance_history (uid,coin_id,balance) SELECT uid,coin_id,amount FROM balance;

DECLARE done INT DEFAULT FALSE;

DECLARE cursor1 CURSOR FOR SELECT primary_key,timestamp FROM balance_history WHERE timestamp < DATE_SUB(NOW(), INTERVAL 7 DAY); 

DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;

DECLARE id INT;

DECLARE time1 TIMESTAMP;

OPEN cursor1;

read_loop: LOOP;
    IF done THEN
      LEAVE read_loop;
    END IF

    FETCH cursor1 INTO id,time1;
END LOOP

CLOSE cursor1;
END//

DELIMITER;

Теги:
stored-procedures

1 ответ

1
Лучший ответ

MySQL хранимые процедуры, функции и т.д. Имеют некоторые правила о том, где переменные могут быть DECLAREd. Как правило, начало блока лучше; хотя определенные типы локальных переменных должны быть объявлены после других.

Это хорошая ссылка для начала в документации MySQL при поиске специфики.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню