存储过程和方法的区别

存储过程:可以有0个返回,也可以有多个返回,适合做批量处理、批量插入
函数:有且仅有1个返回,适合做处理数据后返回一个结果

基本操作

创建

  1. create function 函数名(参数列表) returns 返回类型
  2. begin
  3. 函数体
  4. end
  5. -- 注意点:参数列表有两个部分:
  6. -- 参数名,参数类型

函数体:肯定有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里面

删除函数

drop function myf3;

案例

两数之和

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);