zoukankan      html  css  js  c++  java
  • 自定义MySQL函数

    1、MySQL创建函数语法:

    CREATE
      [DEFINER = { user | CURRENT_USER }]
    FUNCTION sp_name ([func_parameter[,...]])
    RETURNS type
    [characteristic ...] routine_body
    
    func_parameter:
        param_name type
    
    type:
        Any valid MySQL data type
    
    routine_body:
        Valid SQL routine statement

    注意:自定义函数不能跨库使用

    mysql> DELIMITER //
    mysql> CREATE FUNCTION Ver_Compare (n INT, m INT)
        -> RETURNS VARCHAR(50)    #声明返回的数据类型
            -> BEGIN
        ->   DECLARE s VARCHAR(50);
        ->   IF n = m THEN SET s = 'equals';
        ->   ELSE
        ->     IF n > m THEN SET s = 'greater';
        ->     ELSE SET s = 'less';
        ->     END IF;
        ->     SET s = CONCAT('is ', s, ' than');
        ->   END IF;
        ->   SET s = CONCAT(n, ' ', s, ' ', m, '.');
        ->   RETURN s;    #一个实际的返回值
    -> END // mysql> DELIMITER ;

    由上述例子,不难看出,自定义函数的创建其实和create存储过程还是很相似的。

     

    2、函数调用

      自定义函数虽然在创建定义上和存储过程类似,但调用时却有些许的不一样。

    mysql> call Ver_Compare(1,2);
    ERROR 1305 (42000): PROCEDURE db1.Ver_Compare does not exist
    
    mysql> set @ax = Ver_Compare(1,2);
    mysql> select @ax;
    +-------------------+
    | @ax               |
    +-------------------+
    | 1 is less than 2. |
    +-------------------+

    在我们调用函数的时候,函数需要出现在 = 的右边(也就是说调用函数需要有变量接收其结果

     

    3、其他

      >查看所有自定义函数:show function statusG;

      >删除指定自定义函数:drop function func_name;

  • 相关阅读:
    dfs和bfs算法
    7种查找算法详解(转)
    C语言关键字:auto、static、register、const、volatile 、extern 总结 <转>
    存储类型auto,static,extern,register的区别 <转>
    C++中的内存重叠问题
    auto和register关键字
    监控linux系统的简易脚本
    Linux下面的IO模型
    python--爬虫基础
    网络协议面试
  • 原文地址:https://www.cnblogs.com/geaozhang/p/6809470.html
Copyright © 2011-2022 走看看