6.2 存储函数
6.2.1 创建存储函数
create function语法如下:
create function 存储过程名([参数...])
returns type
[特征...] 存储函数体
- 存储函数的定义格式和存储过程相差不大
- 存储函数不能和已有的存储过程名字相同
- 存储函数的参数只有名称和类型,不能指定 in、out和inout。returns type子句声明函数返回值的数据类型
- 存储函数体:所有存储过程中使用的SQL语句在存储函数中也适用,包括流程控制语句、游标等。但是存储函数体中必须包含一个return value语句,value为存储函数的返回值。这是存储过程体中没有的。
例如:创建一个存储函数,返回xs表中学生的人数作为结果
delimiter $$
create function num_of_xs()
returns integer
begin
return( select count(*) from xs);
end $$
delimiter ;
例如:创建一个存储函数来删除xs_kc表中存在但xs表中不存在的学号。
delimiter $$
create function delete_xh(xh char(6))
returns boolean
begin
declare stu char(6)
select 姓名 into stu from xs where 学号=xh;
if stu is null then
delete from xs_kc where 学号=xh;
return true;
else
return false;
end if
end$$
delimiter ;
6.2.2 存储函数的调用、删除和修改
1. 存储函数的调用
存储函数创建完成后,如同系统提供的内置函数(version()函数)、所以调用存储函数的方法也差不多,都是使用select关键字。
其语法格式如下:
select 存储函数名(参数[,...])
例如:
select num_of_xs();
例如:创建一个存储函数,通过调用存储函数name_of_stu获得学号的姓名,判断姓名是否是王林,是则返回王林的出生日期,不是则返回‘false’
delimiter $$
create function name_of_stu(xh char(6))
returns