2015-10-14 2 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

DEFAULT серый -> 'серый'? – Pieter21

ответ

0

Я хотел бы изменить имя параметра CURRENT_TIME, так как существует функция current_time() и MySQL не может быть в состоянии различить в определенных местах в вашем коде, если ваш код относится к параметру или функции.

+0

Я уже изменил это, и я до сих пор получаю эту ошибку: У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с «DELIMITER // CREATE FUNCTION NodeState (current_time2 DATETIME, lastcheck DATE» в строке 1 –

+0

Хорошо, я не объявлял perc ... Но я все еще получаю Ошибка –

Смежные вопросы