2015-10-14 63 views
-1
DELIMITER // 
CREATE FUNCTION NodeState (current_time DATETIME, lastcheck DATETIME, polling_time INT) 
RETURNS varchar(20) 

BEGIN 

    DECLARE node_state VARCHAR(20) DEFAULT grey; 
    DECLARE time_gap DATETIME; 
    SET time_gap = TIMESTAMPDIFF(SECOND, current_time, lastcheck); 
    SET perc = polling_time*0.05; 

    if time_gap > perc then 
     SET node_state = 'red'; 
    ELSEif time_gap = perc then 
     SET node_state = 'orange'; 
    ELSEif time_gap – lastcheck < perc then 
     SET node_state = 'green'; 
    END IF; 

    RETURN node_state; 

END; // 

我试图创建这个函数,我一行一行地去,但找不到错误。创建函数时出现SQL语法错误

我得到的错误是1064(42000)

+0

如果出现语法错误,错误信息是什么? – Jens

+3

默认灰色 - >'灰色'? – Pieter21

回答

0

我会改变CURRENT_TIME参数的名称,因为有CURRENT_TIME()函数和MySQL可能无法在你的代码,如果在某些位置来区分你的代码引用参数或函数。

+0

我已经改变了,我仍然得到这个错误: 你的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册,在'DELIMITER // CREATE FUNCTION NodeState(current_time2 DATETIME,lastcheck DATE')第1行 –

+0

附近使用正确的语法。好吧,我没有声明perc ...但我仍然得到错误 –