Ошибка разделителя хранимых процедур MySQL - PullRequest
0 голосов
/ 28 июня 2018

Я пытаюсь реализовать хранимую процедуру для создания снимка баланса пользователя, и в строке 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//

РАЗДЕЛИТЕЛЬ;

1 Ответ

0 голосов
/ 28 июня 2018

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

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

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