知识笔记--函数
1. 函数
函数:有且仅有1个返回值,适合做处理数据后返回一个结果
存储过程:可以有0个返回值,也可以有多个返回值,适合做批量插入、批量更新
创建语法:
create FUNCTION 函数名(参数列表) returns 返回类型
BEGIN
函数体
END
注意:
1.参数列表 包含两部分
参数名,参数类型
2.函数体:肯定会有return语句,如果没有会报错
如果return语句没有放在函数体的最后也不报错,但不建议
return 值;
3.函数体中仅有一句话,则可以省略begin end
4.使用delimiter语句设置结束标记
调用语法:
# 意思是执行函数体的语句,并显示返回值
select 函数名(参数列表);
2. 案例演示
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') $
3. 根据部门名,返回该部门的平均工资
delimiter $
create FUNCTION myf3(departName varchar(20)) returns double
begin
declare c double default 0;
select avg(e.salary) into c
from employees e, departments d
where e.department_id = d.department_id
and d.department_name = departName;
return c;
end $
select myf3('IT') $
3. 查看函数
show create FUNCTION 函数名;
4. 删除函数
drop FUNCTION 函数名;
案例演示
方法1:
delimiter $
create function fun3(num1 float, num2 float) returns FLOAT
BEGIN
declare result float;
set result = num1 + num2;
return result;
end $
select fun3(1, 3) $
方法2:
delimiter $
create function fun4(num1 float, num2 float) returns FLOAT
BEGIN
set @result = num1 + num2;
return @result;
end $
select fun4(1, 3) $
本文来自博客园,作者:jsqup,转载请注明原文链接:https://www.cnblogs.com/jsqup/p/16048889.html