49 lines
848 B
SQL
49 lines
848 B
SQL
DELIMITER $$
|
|
CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`route_doRecalc`()
|
|
proc: BEGIN
|
|
/**
|
|
* Recalculates modified route.
|
|
*/
|
|
|
|
DECLARE vDone BOOL;
|
|
DECLARE vRouteFk INT;
|
|
|
|
DECLARE cCur CURSOR FOR
|
|
SELECT routeFk FROM routeRecalc;
|
|
|
|
DECLARE CONTINUE HANDLER FOR NOT FOUND
|
|
SET vDone = TRUE;
|
|
|
|
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION
|
|
BEGIN
|
|
DO RELEASE_LOCK('vn.route_doRecalc');
|
|
ROLLBACK;
|
|
RESIGNAL;
|
|
END;
|
|
|
|
IF !GET_LOCK('vn.route_doRecalc', 0) THEN
|
|
LEAVE proc;
|
|
END IF;
|
|
|
|
OPEN cCur;
|
|
|
|
myLoop: LOOP
|
|
SET vDone = FALSE;
|
|
FETCH cCur INTO vRouteFk;
|
|
|
|
IF vDone THEN
|
|
LEAVE myLoop;
|
|
END IF;
|
|
|
|
START TRANSACTION;
|
|
CALL route_updateM3(vRouteFk);
|
|
COMMIT;
|
|
|
|
DELETE FROM routeRecalc WHERE routeFk = vRouteFk;
|
|
END LOOP;
|
|
|
|
CLOSE cCur;
|
|
DO RELEASE_LOCK('vn.route_doRecalc');
|
|
END$$
|
|
DELIMITER ;
|