存儲函數返回一個計算結果,該結果可以用在表達式裏。
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)