跳到主要内容

存储函数

函数可以理解为一种特殊的存储程序,函数可以有返回值,并且所有参数都是 IN 类型。

函数的结构

函数的结构如下,与存储过程相比,至少包含一个或多个 RETURNS 子句:

FUNCTION sp_name ([func_parameter[,...]])
RETURNS type
[characteristic ...]
BEGIN -- 开始执行
SQL statement; [ SQL statement; ...]
END; -- 结束执行

func_parameter:
param_name type

type:
Any valid MySQL data type

characteristic: {
COMMENT 'string'
| LANGUAGE SQL
| [NOT] DETERMINISTIC
| { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
| SQL SECURITY { DEFINER | INVOKER }
}

函数的创建

函数通过 CREATE FUNCTION 语句进行创建,并需满足如下条件:

  • 函数需要考虑返回值的设置。

  • 所有函数必须至少有一个 RETURNS 语句。

  • 函数要作为表达式被调用,需要与其他语句结合使用。

示例如下:

CREATE FUNCTION my_func (c1 CHAR(20)) RETURNS CHAR(50) DETERMINISTIC
RETURN CONCAT('Thank ',c1,'!');
Query OK, 0 rows affected

SELECT my_func('You');
+----------------+
| my_func('You') |
+----------------+
| Thank You! |
+----------------+
1 row in set