DELIMITER $$ CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`worker_isWorking`(vWorkerFk INT) RETURNS tinyint(1) NOT DETERMINISTIC READS SQL DATA BEGIN /** * Comprueba si el trabajador está trabajando en el momento de la consulta * @return Devuelve TRUE en caso de que este trabajando. Si se encuentra en un descanso devolverá FALSE */ DECLARE vLastIn DATETIME ; SELECT MAX(timed) INTO vLastIn FROM vn.workerTimeControl WHERE userFk = vWorkerFk AND direction = 'in'; IF (SELECT MOD(COUNT(*),2) FROM vn.workerTimeControl WHERE userFk = vWorkerFk AND timed >= vLastIn ) THEN RETURN TRUE; ELSE RETURN FALSE; END IF; END$$ DELIMITER ;