43 lines
977 B
SQL
43 lines
977 B
SQL
DELIMITER $$
|
|
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn2008`.`Vehiculos_consumo_calculateLiters100km`()
|
|
BEGIN
|
|
DECLARE vConsumptionVehicleId INT;
|
|
DECLARE vDone BOOL;
|
|
DECLARE vOldKm INT;
|
|
DECLARE vOldLiters INT;
|
|
DECLARE vNewKm INT;
|
|
DECLARE vVehicleId INT;
|
|
|
|
DECLARE cur CURSOR FOR
|
|
SELECT Vehiculos_consumo_id, Id_Vehiculo, km FROM vn2008.Vehiculos_consumo;
|
|
|
|
DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE;
|
|
|
|
OPEN cur;
|
|
|
|
l: LOOP
|
|
SET vDone = FALSE;
|
|
FETCH cur INTO vConsumptionVehicleId, vVehicleId, vNewKm;
|
|
|
|
IF vDone THEN
|
|
LEAVE l;
|
|
END IF;
|
|
|
|
SELECT km, litros INTO vOldKm, vOldLiters
|
|
FROM Vehiculos_consumo
|
|
WHERE Id_Vehiculo = vVehicleId
|
|
AND Vehiculos_consumo_id < vConsumptionVehicleId
|
|
ORDER BY Vehiculos_consumo_id DESC
|
|
LIMIT 1;
|
|
|
|
UPDATE Vehiculos_consumo
|
|
SET liters100km = vOldLiters/((vNewKm-vOldKm)*0.01)
|
|
WHERE Vehiculos_consumo_id = vConsumptionVehicleId;
|
|
|
|
END LOOP;
|
|
|
|
CLOSE cur;
|
|
|
|
END$$
|
|
DELIMITER ;
|