2013-06-04 82 views
-4

「#1064 - 您的SQL語法錯誤;查看與您的MySQL服務器版本相對應的手冊,以找到正確的語法以在'CREATE FUNCTION TavoliLiberi(dataora DATETIME) RETURN BOOL BEGIN DECLARE prese'at line 3「in this function:創建函數時出現「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

在函數聲明不是返回RETURN「CREATE FUNCTION TavoliLiberi(dataora DATETIME)RETURNS BOOL 」。 –

+0

[已解決]問題是「返回」,而不是像路易斯G.科斯坦尼尼河建議我「返回」,但只從終端上傳它,而不是用phpMyAdmin導入它,它被正確處理。 – Giacomo

1

定界符變化試試這個,而不是

DELIMITER $ 

DROP FUNCTION IF EXISTS TavoliLiberi$ 

保持休息一樣