定时任务:
现在是mysql定时任务的带参数的部分;
:参数的前面需要IN
基本格式:
Sp_Update_Distance( in 变量名 变量类型, in 变量名 变量类型, in 变量名 变量类型, in 变量名 变量类型, in 变量名 变量类型);
下面的语句实现的作用:
(1)#1:先去创建一个存储过程,里面有5个参数;
根据具体的情况:需要的是车牌号,里程,日期,
仍然选择5个参数是为了:和*经理方面的程序保持一致;
其中使用到是:License(车牌号);Distance(里程);G_Date(日期)
#2:声明了2个里程,因为下面会对里程进行删除操作;然后又需要插入操作;
所以:这样做是将需要的数据提前保留在一个声明的变量中。
#3: 删除数据;(满足输入参数的那条数据)
#4:添加一条数据(经过计算得到的那条里程数据)
总结:这个存储过程可以修改比如今天是2021年1月4日,
所以可以修改之前的任意一天的数据;
```javaDELIMITER $$USE `subiaodb`$$DROP PROCEDURE IF EXISTS `Sp_Update_Distance`$$CREATE DEFINER = `root` @`localhost` PROCEDURE `Sp_Update_Distance` ( #1 IN Simcard_No CHAR(11), IN License VARCHAR (20), IN LColor CHAR(1), IN Distance FLOAT, IN G_Date DATETIME) BEGIN DECLARE Mileage3 DOUBLE ; #2 DECLARE Mileage4 DOUBLE ; SELECT mileage1 INTO Mileage3 FROM fuelconsumption WHERE plateNo = License AND DATE_FORMAT(staticDate, '%Y-%m-%d') = DATE_FORMAT(G_Date, '%Y-%m-%d') ; SELECT mileage2 INTO Mileage4 FROM fuelconsumption WHERE plateNo = License AND DATE_FORMAT(staticDate, '%Y-%m-%d') = DATE_FORMAT(G_Date, '%Y-%m-%d') ; DELETE #3 FROM fuelconsumption WHERE plateNo = License AND DATE_FORMAT(staticDate, '%Y-%m-%d') = DATE_FORMAT(G_Date, '%Y-%m-%d') ; INSERT INTO fuelconsumption ( #4 plateNo, staticDate, mileage, deleted, companyId, gas, gas1, gas2, HOUR, intervalType, mileage1, mileage2, createDate ) VALUES ( License, G_Date, Distance, b'0', 0, 0, 0, 0, 0, 1, Mileage3, Mileage4, DATE_ADD(G_Date, INTERVAL 1 DAY) ) ;END $$DELIMITER ;
有的时候mysql的存储过程需要提前退出;类似sqlserver的return;https://www.cnblogs.com/Braveliu/p/10149070.html(这是转载一个前辈的)
原创文章,作者:筱凯,如若转载,请注明出处:https://www.jingyueyun.com/ask/866.html