函数
函数与存储过程区别:
存储过程: 可以有0个和多个返回,适合做批量插入、批量更新。
函数: 只能有一个返回值,适合做处理数据后返回一个结果。
一、创建语法
create function 函数名(参数列表) returns 返回类型
begin
函数体(也就是sql语句)
end
注意:
1.参数列表包含参数名和参数类型。
2.函数体肯定会有return语句。
return 值;
3.函数体仅有一句话,则可以省略begin end
4.使用delimiter语句设置结束标记。
delimiter $;
二、调用语法
select 函数名(参数列表)
案例:
1.无参数返回
#查询员工个数
delimiter $
create function myf1() RETURNS int
begin
DECLARE c int DEFAULT 0;
select count(*) into c
from employees;
return c;
end $
select myf1() $;
2.有参返回
#根据员工名返回工资
delimiter $
create function myf2(empName VARCHAR(20)) RETURNS double
begin
set @sal=0;
select salary into @sal
from employees
where last_name=empName;
return @sal;
end $
select myf2('Kochhar') $
#根据部门名,返回部门的平均工资
delimiter $
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('IT') $;
三、查看函数
show create function 函数名;
四、删除函数
drop function 函数名;