存储函数
函数可以理解为一种特殊的存储程序,函数可以有返回值,并且所有参数都是 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