存储函数返回一个计算结果,该结果可以用在表达式里。

1.定义语法

CREATE FUNCTION  sp_name ([ func_parameter[,...]])      RETURNS  type      [ characteristic ...]  routine_body                                                                                func_parameter:      param_name  type                                                                        type:      Any valid MySQL data type                                                                        characteristic:      LANGUAGE SQL    | [NOT] DETERMINISTIC    | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }    | SQL SECURITY { DEFINER | INVOKER }    | COMMENT ' string '                                                                        routine_body:      Valid SQL procedure statement or statements

2.修改存储函数:在不重建存储函数的前提下,只能够修改存储函数的characteristic属性。若需要改变存储函数包含的语句和逻辑过程,则只能够drop function后重新create。

ALTER FUNCTION func_name [characteristic …]characteristic:      COMMENT 'string'    | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }    | SQL SECURITY { DEFINER | INVOKER }3.

3.删除存储函数:

DROP FUNCTION [IF EXISTS] func_name

4.查看存储函数:显示MySQL中所有数据库中定义的存储函数信息(可直接查询mysql.proc表中type=’FUNCTION’的记录)

SHOW FUNCTION STATUS

5.调用函数:能够想调用系统函数般调用存储函数

   存储函数返回一个值,因此能够放在任意表达式中使用。

6.用例

mysql> delimiter //           mysql> CREATE FUNCTION hello (s CHAR(20)) RETURNS CHAR(50)      ->  RETURN CONCAT('Hello, ',s,'!');      ->  //Query OK, 0 rows affected (0.00 sec)mysql> delimiter ;mysql> SELECT hello('world');+----------------+| hello('world') |+----------------+| Hello, world!    |+----------------+1 row in set (0.00 sec)