• MySQL进阶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
     
     
     
  • 相关阅读:
    【网络与系统安全】20179209 利用metasploit对windows系统的渗透
    2017-2018-1 20179209《Linux内核原理与分析》第五周作业
    【网络与系统安全】20179209 木马的利用
    2017-2018-1 20179209《Linux内核原理与分析》第四周作业
    【网络与系统安全】20179209 wireshark和nmap实验
    2017-2018-1 20179209《Linux内核原理与分析》第三周作业
    20179209课后作业之od命令重写
    ORA-12505 错误解决
    linux_memcached_memcachedb
    linux_jvm_jmap_dump内存分析
  • 原文地址:https://www.cnblogs.com/zhazhaacmer/p/9897989.html
Copyright © 2020-2023  润新知