存储函数返回一个计算结果,该结果可以用在表达式里。
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)
转载于:https://blog.51cto.com/baikkp/1240569