mysql的函数和存储过程

共同点:

  1. 都是一组sql语句集合
  2. 提高代码复用性
  3. 简化操作
  4. 减少编译次数,并减少了和数据库服务器的连接次数

区别:

存储过程可以有0个返回或者多个返回,适合批量插入和更新
函数:有且仅有一个返回,适合做完数据处理后返回一个结果

函数语法说明

create function funcname(params) returns return_type
begin
    func_detail;
end

ps:
1. params包含两个部分:参数名 参数类型
2. 函数体必须包含return 语句
3. delimiter语句设置结束标记

函数调用说明

select funcname(params)

案例

返回table1的记录数

create function myf1() returns int
begin
    declare c int default 0;
    select count(*) into c
    from table1;
    return c;
end $

select myf1() $

根据name返回age

create function myf2(uname varchar(20)) returns int
begin
    set @age=0;
    select age into @age
    from table1 where name=uname;
    return @age;
end $

select myf2("a2") $

查看函数

show create function myf2;

删除函数

drop function myf2;