自定义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 status\G;

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

posted @ 2017-05-04 20:01  GeaoZhang  阅读(2556)  评论(0编辑  收藏  举报