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;

  • 相关阅读:
    数据结构第四篇——线性表的链式存储之双向链表
    基本概念之引用赋值需要注意什么?
    基本概念之将引用作为函数的参数有哪些特点?
    基本概念之什么是引用?
    基本概念之模板类有什么优势?
    我的第一篇博文
    为CentOS 6 配置本地YUM源
    为CentOS 6 配置本地YUM源
    poj 1990 MooFest
    [置顶] 学生信息管理系统“重复设置”问题
  • 原文地址:https://www.cnblogs.com/geaozhang/p/6809470.html
Copyright © 2011-2022 走看看