存储过程和方法的区别
存储过程:可以有0个返回,也可以有多个返回,适合做批量处理、批量插入
函数:有且仅有1个返回,适合做处理数据后返回一个结果
基本操作
创建
create function 函数名(参数列表) returns 返回类型
begin
函数体
end
-- 注意点:参数列表有两个部分:
-- 参数名,参数类型
函数体:肯定有return语句,如果没有会报错。
return 语句最好在最后
return 值:
函数体仅有一句话,则可以省略begin end
举例
无参返回
--- 声明myf1() 查看公司个数
create function myf1() returns int
begin
declare c int DEFAULT 0;
select count(*) into c
from employees;
return c;
END
### 使用
select myf1();
有参有返回
-- 根据员工名,返回它的工资
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')
--- 根据部门名,返回该部门平均工资
create function myf4(dName varchar(20)) returns double
begin
declare avg_salary double;
select avg(e.salary) into avg_salary from employees e join departments d on e.department_id = d.department_id where d.department_name = dName;
return avg_salary;
end
select myf4('IT');
查看函数
show create function myf3();
都在schema: mysql中的 table:proc里面
删除函数
案例
两数之和
create function test_fun1(num1 float,num2 float) returns float
begin
declare res float;
select num1+ num2 into res;
return res;
end
select test_fun1(1.0,2.1);