salix/db/routines/srt/procedures/buffer_readPhotocell.sql

29 lines
828 B
SQL

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 ;