一、函数
一组预先编译好的sql语句的集合,可以理解为批处理语句
优点:
提高代码的重用性
简化操作
减少了编译次数并且减少了和数据库服务器的连接次数,提高效率
区别:
存储过程:可以有0个返回,也可以有多个返回,适合做批量插入、批量更新
函数:有且仅有1个返回,适合做处理数据后返回一个结果
语法:
create function 函数名(参数列表) returns 返回类型
begin
函数体
end
注意:
1、参数列表包含参数名、参数类型
2、函数体:如果没有returns语句一定会报错,虽然returns不放在函数体最后也不会报错,但是没有意义,不建议这样写
3、函数体仅有一句话,则可以省略begin end
4、使用delimiter语句设置结束标记
二、调用语法
select 函数名(参数列表);
-- 1、无参有返回 -- 案例:返回公司的员工个数 delimiter $ create function hs1() returns int begin declare ct int default 0; # 定义变量 select count(*) into ct # 赋值 from employees; return ct; # 返回变量值 end $ -- 调用 select hs1(); -- 2、有参有返回 -- 案例1:根据员工名返回工资 delimiter $ create function hs2(name varchar(20)) returns double begin set @ne=0; select salary into @ne from employees where last_name=name; return @ne; end $ select salary from employees where last_name='K_ing'; -- 注意:如果最终查询结果有2个值,则会返回空 select hs2('Kochhar'); -- 案例2:根据部门号返回该部门的平均工资 delimiter $ create function hs3(bmid int) returns double begin declare sy double default 00.00; select avg(salary) into sy from employees where department_id=bmid; return sy; end $ -- 调用 select hs3(60) as avg_salary;
三、查看函数
show create function 函数名;
四、删除函数
drop function 函数名;