DELIMITER $$ CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `srt`.`buffer_readPhotocell`(vSelf INT, vNumber INT) BEGIN /** * Establece el estado de un buffer en función del número de fotocélulas activas * * @param vSelf Identificador de srt.buffer * @param vNumber Número de fotocélulas activas */ DECLARE vIsFull BOOL; DECLARE vBoxes INT; DECLARE vMotors INT; DECLARE vMargin INT; SELECT ((COUNT(*) + vNumber + c.motorsMargin) >= b.motors AND b.motors > 1), COUNT(*), b.motors, c.motorsMargin INTO vIsFull, vBoxes, vMotors, vMargin FROM srt.buffer b LEFT JOIN srt.moving m ON m.bufferToFk = b.id JOIN srt.config c WHERE b.id = vSelf; IF vIsFull THEN CALL srt.buffer_setStateType(vSelf, 'FULL', NULL); ELSE CALL srt.buffer_setStateType(vSelf, 'FREE', NULL); END IF; END$$ DELIMITER ;