知识笔记--函数

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) $
posted @ 2022-03-24 11:20  jsqup  阅读(17)  评论(0编辑  收藏  举报