数据库的定时任务

一、存储过程

1.1.创建存储过程
create procedure sp_name()
begin
.........
end

1.2.调用存储过程
1.基本语法:call sp_name()
注意:存储过程名称后面必须加括号,哪怕该存储过程没有参数传递

1.3.删除存储过程

1.基本语法:
drop procedure sp_name//

2.注意事项
(1)不能在一个存储过程中删除另一个存储过程,只能调用另一个存储过程

1.4.其他常用命令

1.show procedure status
显示数据库中所有存储的存储过程基本信息,包括所属数据库,存储过程名称,创建时间等

2.show create procedure sp_name
显示某一个MySQL存储过程的详细信息

1.5实例

简单实例. 
创建表 CREATE TABLE test(endtime DATETIME); 

1.5.1创建存储过程test 
     CREATE PROCEDURE test () 
     BEGIN 
          update examinfo SET endtime = now() WHERE id = 14; 
     END; 

     创建event e_test 
     CREATE EVENT if not exists e_test 
          on schedule every 30 second 
          on completion preserve 
     do call test(); 

     每隔30秒将执行存储过程test,将当前时间更新到examinfo表中id=14的记录的endtime字段中去

1.5.2实例

存储过程实例:

-    CREATE PROCEDURE timeTestThree() 
--    BEGIN 
--   update alarmdata SET Reason=replace(Reason,':',':') where (Reason LIKE '%:%' AND id<1231);
--    END; 

定时执行:

  CREATE EVENT if not exists e_timeTestThree
        on schedule every 10 minute 
         on completion preserve 
   do call timeTestThree(); 

查看状态:

-- SHOW PROCEDURE STATUS;  (查看存储过程);或者  show procedure status;
  ---SHOW VARIABLES LIKE 'event_scheduler'; (事件计划是否开启):OFF代表没有开启

SET GLOBAL event_scheduler = ON;开启

SET GLOBAL event_scheduler =OFF; 关闭;

1.6定时执行

mysql怎么让一个存储过程定时执行
查看event是否开启: show variables like '%sche%'; 或者 SHOW VARIABLES LIKE 'event_scheduler'; 

OFF表示关闭。那么,可以使用 sql去开启事件执行

SET GLOBAL event_scheduler = ON; 

到此就可以定时执行执行的过程。

将事件计划开启: set global event_scheduler=1; 
关闭事件任务: alter event e_test ON COMPLETION PRESERVE DISABLE; 
开户事件任务: alter event e_test ON COMPLETION PRESERVE ENABLE; 

参考:

https://blog.csdn.net/qq_26562641/article/details/53301407

https://blog.csdn.net/wq1039822486/article/details/79637168

https://blog.csdn.net/shui0527/article/details/52816788

https://www.cnblogs.com/cxxjohnson/p/5965194.html

https://www.cnblogs.com/oskyhg/p/7679962.html

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Oracle数据库可以通过使用DBMS_SCHEDULER包来配置定时任务。下面是一些基本的步骤: 1. 创建一个JOB,指定它的名称和描述: ```sql BEGIN DBMS_SCHEDULER.CREATE_JOB ( job_name => 'my_job', job_type => 'PLSQL_BLOCK', job_action => 'BEGIN my_procedure; END;', start_date => SYSTIMESTAMP, repeat_interval => 'FREQ=HOURLY; INTERVAL=1', enabled => TRUE, comments => 'This is my job' ); END; / ``` 这个例子创建了一个名为“my_job”的JOB,它是一个PL/SQL块,每小时运行一次,并且在创建后启用。 2. 如果需要,定义JOB的参数: ```sql BEGIN DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE ( job_name => 'my_job', argument_name => 'arg1', argument_value => 'value1' ); END; / ``` 这个例子设置了JOB的名为“arg1”的参数值为“value1”。 3. 如果需要,定义JOB的凭据: ```sql BEGIN DBMS_SCHEDULER.SET_JOB_CREDENTIAL ( job_name => 'my_job', credential_name => 'my_credential' ); END; / ``` 这个例子将名为“my_credential”的凭据分配给了“my_job”。 4. 修改JOB的属性: ```sql BEGIN DBMS_SCHEDULER.SET_ATTRIBUTE ( name => 'my_job', attribute => 'max_run_duration', value => INTERVAL '1' HOUR ); END; / ``` 这个例子将“my_job”的最大运行时间设置为1小时。 5. 删除JOB: ```sql BEGIN DBMS_SCHEDULER.DROP_JOB ( job_name => 'my_job' ); END; / ``` 这个例子删除了名为“my_job”的JOB。 以上是一些基本的步骤,你可以根据自己的需求进行更改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值