2013-06-04 4 views
-4

«# 1064 - У вас возникла ошибка в синтаксисе SQL, проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с CREATE FUNCTION TavoliLiberi (dataora DATETIME) RETURN BOOL BEGIN DECLARE prese 'на линии 3 "в этой функции:«Синтаксическая ошибка MySQL» при создании функции

DELIMITER $ 

DROP FUNCTION IF EXISTS TavoliLiberi; 

CREATE FUNCTION TavoliLiberi (dataora DATETIME) RETURN BOOL 
BEGIN 
DECLARE presenti BOOL; 
DECLARE numPrenotazioni INT; 
DECLARE numTavoli INT; 

SELECT COUNT(*) INTO numPrenotazioni 
FROM Prenotazioni 
WHERE DataOra = dataora; 

SELECT COUNT(*) INTO numTavoli 
FROM Tavoli; 

IF (numPrenotazioni < numTavoli) THEN 
    SET presenti = TRUE; 
ELSE 
    SET presenti = FALSE; 
END IF; 

RETURN presenti; 
END $ 

DELIMITER ; 

Что случилось?

ответ

2

Похоже, что ваш префикс ограничителя установлен неверно. Попробуйте следующее:

DROP FUNCTION IF EXISTS TavoliLiberi; 

DELIMITER $ 

CREATE FUNCTION TavoliLiberi (dataora DATETIME) RETURN BOOL 
.... 
.... 
+0

В объявлении функции является ВОЗВРАТ не ВЕРНУТЬ «CREATE FUNCTION TavoliLiberi (dataora DATETIME) ВОЗВРАТ BOOL ». –

+0

[SOLVED] Проблема заключалась в том, что «RETURN» вместо «RETURNS», как Luis G. Costantini R. предложил мне, но только загружая его с терминала и не импортируя его с phpMyAdmin, он обрабатывался правильно. – Giacomo

1

Изменения разделителями попробовать это вместо

DELIMITER $ 

DROP FUNCTION IF EXISTS TavoliLiberi$ 

держать остальное то же самое