二、函数
含义:一组预先编译好的SQL语句的集合,理解成批处理语句
好处: 1、提高代码的重用性
2、简化操作
3、减少了编译次数并且减少了和数据库服务器的连接次数,提高了效率
存储过程与函数的区别:
关键字 调用语法 返回值 应用场景
存储过程: procedure call 存储过程() 可以有0个或多个返回 用于做批量插入和更新(即增删改)
函数: function select函数() 有且仅有1个返回 用于做处理数据后返回一个结果
一、创建函数
语法:
create function 函数名(参数列表) retrurns 返回类型
begin
函数体
end
注意:
- 参数列表包含两部分:
参数名 参数类型 - 函数体:肯定会有return语句,如果没有会报错
如果return语句没有放在函数体的最后也不会报错,但不建议
return值;(建议放最后) - 函数体中仅有一句话,则可以省略begin end
- 使用delimiter语句设置结束标记
学过的函数:LENGTH、SUBSTR、CONCAT等
二、调用语法
语法:
SELECT 函数名(参数列表)
即执行函数中的所有语句,并显示返回值
#函数的使用(案例演示)
- 无参有返回
#返回公司的员工个数
注:mysql的设置默认是不允许创建函数
这是我们开启了bin-log, 我们就必须指定我们的函数是否是
1 .DETERMINISTIC 不确定的
2 .NO SQL 没有SQl语句,当然也不会修改数据
3 .READS SQL DATA 只是读取数据,当然也不会修改数据
4. MODIFIES SQL DATA 要修改数据
5. CONTAINS SQL 包含了SQL语句
其中在function里面,只有 DETERMINISTIC, NO SQL 和 READS SQL DATA 被支持。如果我们开启了 bin-log, 我们就必须为我们的function指定一个参数。
在MySQL中创建函数时出现这种错误的解决方法:
set global log_bin_trust_function_creators=TRUE;
或执行:
set global log_bin_trust_function_creators=1;
declare c int default 0;→定义局部 变量
select count(*) into c →赋值
三、查看函数
show create function myf1;
四、删除函数
drop function myf3;