7.2存储函数

学会了存储过程,存储函数就很简单了。

概念上,存储函数比存储过程多了个返回值。使用方式和以前学过的系统函数相同,如:year('2020-12-01')。

语法上,少许修改,多了一点关于返回值的东西。

例:

 1 delimiter ~
 2 drop function if exists get_one~
 3 create function get_one(a varchar(20),b varchar(20))
 4 returns varchar(50)
 5 DETERMINISTIC
 6  begin
 7   declare c varchar(50);
 8   set c=concat(a,' and ',b,'are good friends.');
 9   return c;
10  end~
11 delimiter ;

说明:

1、以上代码与存储过程相似,差不多把所有procedure替换为function。

2、第5行DETERMINISTIC用于声明该存储函数是确定性的,即相同输入总是相同输出,不会对可能存在的主从服务器造成不一致的影响,以避免1418错误。

3、第4行表示该存储过程返回一个字符串,第9行给出这个字符串是什么。

调用:

 另例:在数据库d1中,输入姓名,获得该学生的最高分:

delimiter ~
drop function if exists get_one~
create function get_one(axm varchar(20))
returns int
DETERMINISTIC
 begin
  declare axh int;
  declare acj int;
  select xh into axh from t1 where xm=axm;
  select max(cj) into acj from t2 where xh=axh;
  return acj;
 end~
delimiter ;

运行结果:

 存储函数的修改删除,和存储过程类似。

原文地址:https://www.cnblogs.com/wanjinliu/p/15729952.html