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;

  • 相关阅读:
    WebService协议
    用实例揭示notify()和notifyAll()的本质区别 收藏
    深入Java集合学习系列:HashMap的实现原理
    Oracle 索引扫描的五种类型
    Spring 异常
    Spring MVC
    银行家算法
    Java内存模型与多线程
    Spring MVC之@RequestParam @RequestBody @RequestHeader 等详解
    SpringMVC单元测试之MockMVC,模拟登入用户
  • 原文地址:https://www.cnblogs.com/geaozhang/p/6809470.html
Copyright © 2011-2022 走看看