Синтаксическая ошибка ''?

Кажется, я не могу понять, откуда это взялось... MySQL дает мне синтаксическую ошибку пустой кавычки и дает мне номер строки, который, кажется, совсем не неправильный. Что еще хуже, удаление цикла, на который указывает номер строки, по-прежнему дает мне ту же ошибку, только с другим номером строки.

ОШИБКА 1064 (42000) в строке 13: ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, для правильного синтаксиса для использования рядом с '' в строке 39

Поговорите о бесполезной обратной связи от MySQL!

Рассматриваемый код является хранимой функцией, и я столкнулся с этим при попытке применить ответ на другой вопрос. Обновленный код доступен здесь.


РЕДАКТИРОВАТЬ: @MarkByers, вот функция, уменьшенная настолько низко, насколько я мог ее получить, но все еще вызывая ошибку:

DROP FUNCTION IF EXISTS months_within_range;

DELIMITER //

CREATE FUNCTION months_within_range(starts_at DATE, ends_at DATE, filter_range VARCHAR(255)) RETURNS TINYINT
BEGIN
  SET @matches = 1;
  IF @matches >= 1 THEN RETURN 1;
  ELSE RETURN 0;
END//

DELIMITER ;

person neezer    schedule 07.11.2011    source источник
comment
Пожалуйста, не отмечайте свои заголовки. О боже, их 149... :(   -  person Lightness Races in Orbit    schedule 07.11.2011
comment
Можете ли вы попробовать уменьшить хранимую процедуру так, чтобы она содержала как можно меньше строк, но все равно выдавала ошибку?   -  person Mark Byers    schedule 07.11.2011
comment
@TomalakGeret'kal Старые привычки умирают с трудом. :)   -  person neezer    schedule 07.11.2011
comment
@MarkByers Добавлено к моему вопросу.   -  person neezer    schedule 07.11.2011


Ответы (1)


Вам не хватает END IF

 IF @matches >= 1 THEN RETURN 1;
 ELSE RETURN 0;
 END IF;

И причина, по которой RETURN IF(@matches >= 1, 1, 0); работает, заключается в том, что это IF function, который отличается от IF statement.

person Maxim Krizhanovsky    schedule 07.11.2011
comment
Конечно, это что-то простое. Спасибо... смотрел на этот материал для waaaaaay слишком долго. - person neezer; 08.11.2011