1.存储过程
create procedure feifei ( a int, b int ) begin declare c int; set c = a + b; select c as sum; end; call feifei(1,2); drop procedure if exists feifei; CREATE TABLE `timetocid` ( `Id` int(11) NOT NULL AUTO_INCREMENT, `cid` int(11) DEFAULT NULL, `optime` date DEFAULT NULL, PRIMARY KEY (`Id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 2.job 一、创建计划任务: 语法: CREATE [DEFINER = { user | CURRENT_USER }] #计划任务的所有者,一般省略,则为创建者; #否则需要有相关权限,则可以指定其它用户 EVENT #计划任务关键字 [IF NOT EXISTS] #如果不存在则创建,可以省略;否则如果存在,则报错 event_name #计划任务名称 ON SCHEDULE schedule #调度计划,如每20分钟,在几点开始等,参考下面的schedule详解 [ON COMPLETION [NOT] PRESERVE] #对于执行一次的任务,默认执行完则删除.加此, #可控制任务结束后计划任务是否删除或保留 [ENABLE | DISABLE | SLAVESIDE_DISABLED] #指示创建的计划任务是否创建即有效(有 #效则立即执行一次),或禁止执行 [COMMENT 'comment'] #关于计划任务的注释,可放入任务的功能简洁 DO sql_statement; #任务体,可以是单条语句,也可以是以BEGIN/END包裹的符合语句 schedule: AT timestamp [+ INTERVAL interval] #在什么时候开始运行或某时刻之后interval时间 #在运行,用于运行一次的计划任务 | EVERY interval #或者简单的每隔interval时间运行一次 [STARTS timestamp [+ INTERVAL interval]] #STARTS和ENDS配合EVERY关键字, #指定运行时间段,单独的STARTS指示STARTS以后的时间段 [ENDS timestamp [+ INTERVAL interval]] interval: quantity {YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE | WEEK | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE | DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND} #quantity是具体数字,指示多少年或几月或几分钟等 更改计划任务 语法: ALTER EVENT [DEFINER = { user | CURRENT_USER }] #更改缺省用户 event_name [ON SCHEDULE schedule] #更改调度时间 [RENAME TO new_event_name] #计划任务改名 [ON COMPLETION [NOT] PRESERVE] #更改一次运行结束后的行为 [ENABLE | DISABLE | SLAVESIDE_DISABLED] #更改计划任务状态 [COMMENT 'comment'] #修改注释 [DO sql_statement] #修改计划执行体 三、删除计划任务 语法: DROP EVENT [IF EXISTS] event_name 四、开启MySQL计划任务功能支持 MySQL中对计划任务的支持是采用线程调度检测计划任务的。要此功能开启计划任务才会执行。查看调度器状态命令如下: SHOW [FULL] PROCESSLIST\G 如下是没有开启的状态: mysql> SHOW FULL PROCESSLIST\G *************************** 1. row *************************** Id: 10 User: root Host: localhost:4823 db: mysql Command: Query Time: 0 State: NULL Info: SHOW FULL PROCESSLIST 1 row in set (0.00 sec) 通过如下全局配置的设置来开启或关闭调度器: SET GLOBAL event_scheduler = ON/OFF/1/0; --开/关 或SET @@global.event_scheduler = ON/OFF/1/0; 五、示例如下: 其中计划任务体内可以是简单语句,也可以调用存储过程 delimiter // drop event if exists createmonsterevent// create event createmonsterevent on schedule every 20 minute starts CURRENT_TIMESTAMP + INTERVAL 10 minute ENABLE COMMENT '刷怪计划任务' DO begin #20分钟 Call createmonster(date_sub(sysdate(),INTERVAL 24 minute), date_sub(sysdate(),INTERVAL 2 minute)); end; // delimiter ;