1.基本知识点
1.存储函数:由SQL和过程式语句组成,并且可以从应用程序和SQL中调用。
2.存储函数与存储过程的区别:
1)存储函数没有输出参数(out),因为存储函数本身就是输出参数。
2)不能用call语句调用函数。
3)存储函数必须有一个return语句,而存储过程中不能有return。
3.创建存储函数
create function 函数名(参数列表)
returns 类型
函数体
注意:函数不能与存储过程有相同的民资
returns 类型 申明函数返回值类型
4.调用存储函数
select 函数名(参数)
5.删除存储函数
drop function [if exists] 存储函数名
6.查看存储函数
show function status
错误1:开启能够创建函数
show variables like '%func%';
set global log_bin_trust_function_creators = 1;
错误2:是在safe mode下,要强制安全点,update只能跟where
SET SQL_SAFE_UPDATES = 0;
2、代码如下:
delimiter $$
-- 函数1:找到某本书的作者姓名
drop function if exists author_book;
create function author_book(b_name char(20))
returns char(8)
begin
return (select 作者 from book where 书名 = b_name);
end$$
-- 函数2:判断函数1的作者是否姓张,不是的话,返回“不符合要求"
drop function if exists publish_book;
create function publish_book(b_name char(20))
returns char(20)
begin
declare name char(20);
select author_book(b_name) into name;
if name like "张%" then
return (select 出版时间 from book where 书名=b_name);
else
return "不符号要求";
end if;
end$$
delimiter ;
-- 调用函数
select publish_book("网络数据库")