zoukankan      html  css  js  c++  java
  • 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
     
     
     
  • 相关阅读:
    在路上(转)
    我,机器
    梧桐道上
    傅盛:如何快慢“炼”金山?(转)
    [JS]笔记15之客户端存储cookie
    [JS]笔记14之事件委托
    [JS]笔记13之Date对象
    将博客搬至CSDN
    [JS]笔记12之事件机制--事件冒泡和捕获--事件监听--阻止事件传播
    [JS]笔记11之正则表达式
  • 原文地址:https://www.cnblogs.com/zhazhaacmer/p/9897989.html
Copyright © 2011-2022 走看看