43 lines
977 B
MySQL
43 lines
977 B
MySQL
|
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 ;
|