美文网首页
MySQL 创建函数入门

MySQL 创建函数入门

作者: 单v纯微笑 | 来源:发表于2022-03-05 18:28 被阅读0次

    参考资料:

    MySQL之自定义函数 - 知乎 (zhihu.com)

    MySQL 数据类型 | 菜鸟教程 (runoob.com)

    基本语法

    -- 修改结尾分割符为“$$”。
    -- MySQL默认是根据“;”作为分隔符的,当检查到有“;”就认为语句结束了。故需要改变
    DELIMITER $$
    -- 第一条SQL: 创建前先尝试删除历史的方法
    DROP FUNCTION IF EXISTS 方法名$$
    -- 第二条SQL: 创建方法
    CREATE FUNCTION 方法名(参数 参数类型)
    RETURNS 返回值类型
    COMMENT '这是注释内容,主要用来说明该方法是用来干什么的'
    BEGIN
      -- 使用“DECLARE”关键字定义变量,类型JavaScript中的var
      DECLARE 变量名 变量类型[(变量长度)] DEFAULT 默认值;
      -- 或
      DECLARE 变量名 变量类型[(变量长度)];
    
      -- 这里写方法体
      ...
      
      -- 变量赋值:
      SET 变量名 := 变量值;
      -- 或
      -- 相当于: 变量A = A, 变量B = B
      SELECT A, B INIO 变量A, 变量B FROM 表;
      
      -- 判断
      IF 变量 = 变量值1 THEN
        ...
      -- 注意MySQL是ELSEIF,而不是ELSIF
      ELSEIF 变量 = 变量值1 THEN
        ...
      ELSE 
        ...
      END;
      
      -- 嵌套判断
      -- 第一层判断:
      IF 变量 = 变量值1 THEN
        -- 第二层判断:
        IF 变量 = 变量值1 THEN
          ...
        END;
      ELSEIF 变量 = 变量值1 THEN
        ...
      ELSE 
        ...
      END;
      
      RETURN 变量;
    END $$
    -- 记得将分隔符改为默认的“;”
    DELIMITER ;
    

    注意

    • 如果参数或返回的值是不确定小数位数的数值,类型推荐使用:FLOATDOUBLE,尽量不使用DECIMAL

      原因:DECIMAL默认会被解析成DECIMAL(10, 0),如果传一个小数进入,会被处理成整数。

      比如:传入5.5,则处理成6。

    • MySQL函数默认不支持可变参数和重载。

    示例

    DELIMITER $$
    DROP FUNCTION IF EXISTS GETWD$$
    CREATE FUNCTION GETWD(ANGLE FLOAT)
    RETURNS VARCHAR(20)
    COMMENT '根据角度获取方位'
    BEGIN
      DECLARE V_RESULT VARCHAR(20);
    
      IF ANGLE IS NULL THEN
            RETURN NULL;
      END IF;
        
      IF (315 >= ANGLE AND ANGLE < 45) THEN
        SET V_RESULT := 'N';
      ELSEIF (45 <= ANGLE AND ANGLE < 135) THEN
        SET V_RESULT := 'E';
      ELSEIF (135 <= ANGLE AND ANGLE < 225) THEN
        SET V_RESULT := 'S';
      ELSEIF (225 <= ANGLE AND ANGLE < 315) THEN
        SET V_RESULT := 'W';
      ELSE
        SET V_RESULT := 'N';
      END IF;
      RETURN V_RESULT;
    END $$
    DELIMITER ;
    

    相关文章

      网友评论

          本文标题:MySQL 创建函数入门

          本文链接:https://www.haomeiwen.com/subject/sgsbrrtx.html