概述
存储过程和函数类似于Java中的方法,方法会封装,隐藏实现细节。
优点:
提高代码重用性;
简化操作;
减少编译次数,减少连接数据库的次数;
存储过程与函数的区别
存储过程:可以有0个返回,也可以有多个返回,适合批量插入,批量更新。
函数:有且仅有一个返回,适合用于处理数据后返回一个结果。
函数创建
create function 函数名 (参数列表)returns 返回类型
begin
函数体
end
注意:
①参数列表包含两部分 :参数名、参数类型
②函数体肯定有return 语句,如果没有会报错
如果return语句没有在函数体最后也不报错,但不建议
③函数体中只有一句话可以省略begin end
④使用delimiter 语句设置结束标志
调用
select 函数名(参数列表);
=============================================================
delimiter $
1.无参有返回
create function myf1() returns int
begin
declare c int default 0;
select count(*) into c
from rmployees;
return c;
end $
select myf1() $
2.有参有返回
根据员工名返回工资
create function myf2(empName varchar(20) returns double
begin
set @sal = 0;#定义用户变量
select salary into @sal
from employees
where last_name = empName limit 1;
return @sal;
end $
select myf2('k_ing')$
根据部门名返回平均工资
create function myf3(deptName varchar(20)) returns double
begin
declare sal double;
select avg(salary) into sal
from employees e
join departments d on e.department_id = d.department_id
where d.department_name = deptName;
return sal;
end $
select myf3('HR')$
查看
show create function 函数名;
mysql库proc可以查看所有函数、存储过程的详细信息
删除
drop function 函数名;
学习整理于MySQL 基础+高级篇.