MySQL --- 23♪ 进阶19 函数的创建(举例)/设置mysql的创建函数的权限/查看(show)/删除(drop) / 举4个栗子

/*MySQL进阶19 函数

 

存储过程和函数:都类似于java中的方法;

存储过程和函数通用好处:

    1.提高代码的重用性

    2.简化操作

    好处: 减少操作次数,减少了编译次数,减少了和服务器的连接次数,提高了效率    

---------------

#区别

    存储过程 (可以有0个或者多个返回值),适合做批量插入或者批量更新

    函数: 有且仅有一个返回值 ; 适合做处理数据后的返回一个结果

 

*/

/*

#一: 创建语法

create function 函数名(参数列表) returns 返回类型

begin

    函数体

end

 

注意:

    参数列表 包含两个部分;

    参数名 参数类型;

函数体 : 肯定有return 语句,如果没有会报错;

3. 函数体中仅有一句话,则可以省略begin end

4. 使用delimiter 语句设置结束标记

    delimiter $;

 

#二: 调用自定义函数

    select 函数名(参数列表)

    

*/

#-------------------案例演示函数------------------------------

    #1 无参有返回

    

    #根据提示,设置mysql函数权限

SHOW VARIABLES LIKE 'log_bin_trust_function_creators';

SET @@global.log_bin_trust_function_creators='ON';

    #案例 : 返回公司的员工个数 [如下代码可在本地运行,不用在cmd终端打开运行]

DELIMITER $

CREATE FUNCTION myf1() RETURNS INT

BEGIN

    DECLARE rt1 INT DEFAULT 0;  #定义局部变量/赋值并returns

    

    SELECT COUNT(*) INTO rt1

    FROM employees;

    RETURN rt1;

END $

SELECT  myf1() $;   ##结果是 : 107

 

   #2.有参数有返回

   #案例1:根据员工名,返回它的工资

DELIMITER $

CREATE FUNCTION myf2(empName VARCHAR(20)) RETURNS DOUBLE

BEGIN

    DECLARE rt DOUBLE DEFAULT 0;

    SELECT `salary` INTO rt

    FROM employees e

    WHERE e.last_name = empName AND e.first_name='empName';

    RETURN rt;

END $

SET @empName='K_ing' $

SELECT  myf2(@empName) $;  ##返回值为 : 24000

 

    #案例2: 根据部门名,返回该部门的平均工资

DELIMITER $

CREATE FUNCTION myf5(depName VARCHAR(20)) RETURNS DOUBLE

BEGIN

    DECLARE rt DOUBLE ;

    SELECT AVG(salary) INTO rt

    FROM employees e

    JOIN departments d ON e.department_id = d.department_id

    WHERE d.department_name=depName;

    RETURN rt;

END $

SELECT  myf5('IT') $;  ##结果是 : 5760

#三: 查看函数的过程/charset/Datebase collation等信息

 

SHOW CREATE FUNCTION myf5;

 

#四: 删除函数(命令行可操纵!)

DROP FUNCTION myf3;

#案例"

    #1.创建函数,实现传入两个float ,返回两者之和

DELIMITER $

CREATE FUNCTION test_fun1(a FLOAT,b FLOAT) RETURNS FLOAT

BEGIN

    DECLARE SUM FLOAT DEFAULT 0;

    SET SUM=a+b;

    RETURN SUM;

END $

 

SELECT test_fun1(1,12) $   ##结果为:13

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值