У меня есть простая таблица, которая имеет два столбца: столбец int с автоинкрементом, называемый id, и столбец даты, называемый start. Я пытаюсь написать хранимую процедуру, которая, учитывая значение, будет вычислять соответствующую запись, чтобы связать ее. Проблема в том, что я получаю синтаксическую ошибку, которая на самом деле не говорит мне, что происходит. Ошибка:
Код ошибки: 1064. У вас ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, на предмет правильного синтаксиса для использования рядом с 'SET finalResult =андидат;
Вот код, который я использую для создания процедуры. Может кто-нибудь сказать, пожалуйста, что я делаю не так?
delimiter //
CREATE PROCEDURE FindGCLDate(IN targetDate DATE)
BEGIN
DECLARE candidate DATE;
DECLARE finalResult DATE;
DECLARE loopComplete BOOLEAN;
DECLARE allDates CURSOR FOR SELECT * FROM gcl_dates;
DECLARE CONTINUE HANDLER FOR NOT FOUND
SET loopComplete = TRUE;
OPEN allDates;
myLoop : LOOP
FETCH allDates INTO candidate;
SELECT candidate;
IF targetDate < candidate
SET finalResult = candidate; -- this is the offending line
SET loopComplete = TRUE;
END IF;
IF loopComplete THEN
CLOSE allDates;
LEAVE myLoop;
END IF;
END LOOP myLoop;
SELECT finalResult;
END //
Я знаю, что с процедурой больше проблем - я не определил выходной параметр или ничего не возвратил. Но мне просто интересно, почему я получаю эту ошибку.
Спасибо!