存储过程、函数和事件
存储过程、存储函数、事件
函数就是一些功能模块,当想要完成某个功能,就可以调用该函数来实现。
存储过程:
一个存储过程就是一个功能模块。
语法:创建:
delimiter\\
create procedure 名字(参数列表)
begin
sql语句;
end\\
delimiter;
调用:call 名字();
参数列表:参数模式;参数名;参数类型
参数模式:
in:改参数可以作为输入
out:改参数可以作为输出
inout:又可以作为输入又可以作为输出
删除存储过程:drop procedure 存储过程名;
查看存储过程:show create procedure 存储过程名;
存储函数
区别:
存储过程:可以有0个返回值,也可以有多个返回值
函数:有且只有一个返回值
语法:
create function 函数名(参数列表) returns 返回类型
begin
函数体
end
参数列表包含两部分:参数名和参数列表
函数体一定有return语句,没有放在函数体最后也不报错,但是不建议。
调用语法:select 函数名(参数列表)
例子:
DELIMITER $; CREATE FUNCTION myf1() RETURNS INT BEGIN DECLARE c INT DEFAULT 0; SELECT COUNT(*) INTO c FROM emp; RETURN c; END $;
查看函数: show create function 函数名;
删除函数:drop function 函数名;
判断与循环语句
if语句:
if 判断 then sql语句1;
else if 判断2 then sql语句2;
.....
else sql语句n;
end if;
case语句:
case xx
when 值1 then sql语句1;
when 值n then sql语句n;
else sql语句;
end case;
循环:
1.while 条件 do
SQL语句;
end while;
如果条件为真,循环执行do和end while语句之间的语句
2.repeat
SQL语句;
until 条件(没有分号)
end repaat;
until后面的条件不成立就不断循环
3.标签:loop
sql语句;
if 条件 then leave 标签;
end if;
end loop 标签;
自身没有退出循环的条件,如果想要跳出循环,需要借助if语句,满足某种条件利用leave跳出;
查看存储过程:show procedure status;
查看存储过程具体内容:show create procedure 存储过程名;
删除存储过程:drop procedure 名字;
事件
计划任务
首次查看是否开起了事件任务:show variables like ‘%event_sch%’;
开启事件:set global event_scheduler=1;
创建事件的语法:
create event 事件名 on schedule 间隔(例如:every 10 minutes(每隔十分钟))
starts ‘时间’
ends ‘时间’
do sql语句;
从开始时间到结束时间,每间隔多次长时间,执行一吃sql语句。
当前时间:current_timestamp+interval 时间;什么时间以后开始执行;
查看当前系统有哪些事件:show events;
查看事件具体信息:show create event 事件名;
删除一个事件:drop event 事件名;