salix/db/routines/vn/procedures/worker_updateChangedBusines...

41 lines
919 B
SQL

DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`worker_updateChangedBusiness`()
BEGIN
/**
* Actualiza el contrato actual de todos los trabajadores cuyo contracto ha
* empezado/vencido.
*/
DECLARE vBusinessUpdated DATE;
DECLARE vCurdate DATE DEFAULT util.VN_CURDATE();
DECLARE vWorkerFk INT;
DECLARE vDone BOOL;
DECLARE vCursor CURSOR FOR
SELECT DISTINCT b.workerFk
FROM business b
WHERE b.started > vBusinessUpdated AND b.started <= vCurdate
OR b.ended >= vBusinessUpdated AND b.ended < vCurdate;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE;
SELECT businessUpdated INTO vBusinessUpdated
FROM workerConfig;
OPEN vCursor;
l: LOOP
SET vDone = FALSE;
FETCH vCursor INTO vWorkerFk;
IF vDone THEN
LEAVE l;
END IF;
CALL worker_updateBusiness(vWorkerFk);
END LOOP;
UPDATE workerConfig SET businessUpdated = vCurdate;
END$$
DELIMITER ;