创建存储过程
create procedure sp_name()
begin
.........
end
调用存储过程
- 基本语法:call sp_name()
- 注意:存储过程名称后面必须加括号,哪怕该存储过程没有参数传递
删除存储过程
- 基本语法:
drop procedure sp_name
- 注意事项
1.不能在一个存储过程中删除另一个存储过程,只能调用另一个存储过程
其他常用命令
1.show procedure status
显示数据库中所有存储的存储过程基本信息,包括所属数据库,存储过程名称,创建时间等
2.show create procedure sp_name
显示某一个MySQL存储过程的详细信息
实例
- 简单实例.
创建表 CREATE TABLE test(endtime DATETIME);
- 创建存储过程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字段中去
实例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; 关闭;
定时执行
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