求大佬看看这个存储过程写的有什么问题吗?
sql吧
全部回复
仅看楼主
level 3
CREATE DEFINER=`root`@`localhost` PROCEDURE `test`()
BEGIN
#Routine body goes here...
DECLARE i INT;
set i=0;
while i>=9 do
#查询类型
select ELE_TYPE into @eleType from TI_ENERGY_ELE2 group by ELE_TYPE order by ELE_TYPE limit i,1;
#删除这个类型一周前的数据
DELETE FROM TI_ENERGY_ELE2 WHERE ELE_TYPE = @eleType AND CREATE_DATE<= DATE_SUB(CURDATE(), INTERVAL 8 DAY);
set i =i+1;
end while;
END
请问这个存储过程为什么执行表示成功,但是没有删除对应数据
2022年03月01日 06点03分 1
level 1
i=0
while i>=9 do ?
2022年03月01日 07点03分 2
我想复杂了
2022年03月01日 10点03分
level 3
CREATE DEFINER=`root`@`localhost` PROCEDURE `test`()
BEGIN
#Routine body goes here...
#删除这个类型一周前的数据
DELETE FROM TI_ENERGY_ELE2 WHERE ELE_TYPE = 'AB线电压' AND CREATE_DATE<= DATE_SUB(CURDATE(), INTERVAL 15 DAY);
DELETE FROM TI_ENERGY_ELE2 WHERE ELE_TYPE = 'A相电压' AND CREATE_DATE<= DATE_SUB(CURDATE(), INTERVAL 15 DAY);
DELETE FROM TI_ENERGY_ELE2 WHERE ELE_TYPE = 'A相电流' AND CREATE_DATE<= DATE_SUB(CURDATE(), INTERVAL 15 DAY);
DELETE FROM TI_ENERGY_ELE2 WHERE ELE_TYPE = 'BC线电压' AND CREATE_DATE<= DATE_SUB(CURDATE(), INTERVAL 15 DAY);
DELETE FROM TI_ENERGY_ELE2 WHERE ELE_TYPE = 'B相电压' AND CREATE_DATE<= DATE_SUB(CURDATE(), INTERVAL 15 DAY);
DELETE FROM TI_ENERGY_ELE2 WHERE ELE_TYPE = 'B相电流' AND CREATE_DATE<= DATE_SUB(CURDATE(), INTERVAL 15 DAY);
DELETE FROM TI_ENERGY_ELE2 WHERE ELE_TYPE = 'CA线电压' AND CREATE_DATE<= DATE_SUB(CURDATE(), INTERVAL 15 DAY);
DELETE FROM TI_ENERGY_ELE2 WHERE ELE_TYPE = 'C相电压' AND CREATE_DATE<= DATE_SUB(CURDATE(), INTERVAL 15 DAY);
DELETE FROM TI_ENERGY_ELE2 WHERE ELE_TYPE = 'C相电流' AND CREATE_DATE<= DATE_SUB(CURDATE(), INTERVAL 15 DAY);
END
这个存储过程中的SQL 写在一起好,还是分开写好
2022年03月01日 10点03分 3
条件写成 WHERE ELE_TYPE in (‘AB线电压’,‘A相电压’,‘A相电流’...)
2022年03月02日 01点03分
level 8
你应该才游标,还有就是del的时时候有额外条件:CREATE_DATE<= DATE_SUB(CURDATE(), INTERVAL 8 DAY) 看看是否满足
2022年03月03日 08点03分 4
好的
2022年04月03日 02点04分
1