DELIMITER $$ CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticket_recalcByScope`( vScope VARCHAR(255), vId INT ) BEGIN /** * Recalculates tickets in an scope. * * @param vScope The scope name * @param vId The scope id */ DECLARE vDone BOOL; DECLARE vTicketFk INT; DECLARE cTickets CURSOR FOR SELECT id FROM ticket WHERE refFk IS NULL AND ((vScope = 'client' AND clientFk = vId) OR (vScope = 'address' AND addressFk = vId)); DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; OPEN cTickets; myLoop: LOOP SET vDone = FALSE; FETCH cTickets INTO vTicketFk; IF vDone THEN LEAVE myLoop; END IF; CALL ticket_recalc(vTicketFk, NULL); END LOOP; CLOSE cTickets; END$$ DELIMITER ;