当前位置:   article > 正文

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

mysql查看函数权限

/*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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Li_阴宅/article/detail/901774
推荐阅读
相关标签
  

闽ICP备14008679号