十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
1、使用MySQL中的存储过程+事件解决。
成都创新互联公司咨询热线:18980820575,为您提供成都网站建设网页设计及定制高端网站建设服务,成都创新互联公司网页制作领域十载,包括成都混凝土搅拌罐等多个行业拥有多年的网站推广经验,选择成都创新互联公司,为企业锦上添花。
存储过程逻辑为:
1)创建一个新表operationlog_temp,各字段同operationlog相同;
2)将表operationlog更名为operationlog_yyyy-mm-dd;
3)将表operationlog_temp更名为operationlog
事件逻辑为:
1)每个3个月定时调用一次存储过程bakOpLog
2、定义存储过程bakOpLog:
【注】
开始事件功能(MySQL必须先开启事件功能,才能使用事件),用如下SQL语句
SHOW VARIABLES LIKE 'event_scheduler';
SET GLOBAL event_scheduler = ON;
call 就是调用存储过程或者函数
用法:
call 存储过程或者函数名
写存储过程函数(如function cleanTable),在函数中写50条delete语句,或者在函数中弄个循环都可以。然后在客户端执行call cleanTable()就可以了。
给你个例子
drop procedure if exists call proc_temp;
delimiter $ //存储过程从$ 开始
create procedure proc_temp(
IN startDate VARCHAR(20),//设置传入的变量,没有可以不要传
IN endDate VARCHAR(20))
BEGIN
DECLARE dflag INT(11); //这里可以定义你需要的仅在存储过程里使用的变量
SET dflag = 0;//初始化
select * from table where time between startDate and endDate ;//你的sql语句,可以一句可以多句
END $//存储过程从$ 结束
delimiter ;
当上面的选中运行后没问题,可以选中下面的call xx 运行,上面的代码没有改动的话只需要运行一次
call proc_temp("2017-07-05","2017-08-05")
create procedure proprice() is
begin
select avg(price) as average from products;
end;
以上就是规范的格式,请不要添加额外的东西,执行之后调用即可。
如果有其他问题,你可以先百度一下存储过程的规范应用
java代码:
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager
.getConnection("jdbc:mysql://localhost:3306/test?user=rootpassword=111111");
String sql = "{call sel(?)}";
CallableStatement cs = (CallableStatement)con.prepareCall(sql);
cs.execute();
String name = cs.getString(1);
System.out.println(name);
创建存储过程代码:
drop procedure if exists sel;
create procedure sel(out name1 varchar(225))
begin
select name into name1 from a limit 1;
end
输出结果: