忘れない いつまでも忘れない
存储函数
基本操作
创建存储函数
DELIMITER $$
CREATE FUNCTION function_name (param_name type [, ...])
RETURNS return_type
[characteristic ...]
BEGIN-- 函数体 SQL 语句RETURN value;
END;
DELIMITER ;
function_name:函数名称,不能与内置函数同名。
param_name type:输入参数列表,只需指定参数名和类型。
RETURNS return_type:指定返回值的数据类型。
characteristic:可选特性,如DETERMINISTIC、READS SQL DATA、SQL SECURITY DEFINER等。
routine_body:函数主体,包含具体的SQL逻辑,必须以RETURN语句结束。
常见特性:
DETERMINISTIC / NOT DETERMINISTIC:
DETERMINISTIC:相同输入始终产生相同输出(如数学计算)。
NOT DETERMINISTIC:相同输入可能产生不同输出(如涉及当前时间或随机数)。默认为NOT DETERMINISTIC。SQL 数据访问限制:
CONTAINS SQL:包含 SQL 语句,但不读写数据(默认)。
NO SQL:不包含 SQL 语句。
READS SQL DATA:包含读取数据的语句(如 SELECT),但不修改数据。
MODIFIES SQL DATA:包含修改数据的语句(如 INSERT, UPDATE)。SQL SECURITY:
DEFINER:以定义者的权限执行(默认)。
INVOKER:以调用者的权限执行。
调用存储函数
SELECT function_name(arguments);
删除存储函数
DROP FUNCTION [IF EXISTS] function_name;
示例1 简单计算函数:
DELIMITER $$
CREATE FUNCTION add_numbers(a INT, b INT)
RETURNS INT
DETERMINISTIC
BEGINRETURN a + b;
END$$
DELIMITER ;
示例2 查询名字并返回
DELIMITER $$
CREATE FUNCTION get_user_name(in_id INT)
RETURNS VARCHAR(50)
READS SQL DATA
BEGINDECLARE out_name VARCHAR(50);SELECT name INTO out_name FROM tb_user WHERE id = in_id;RETURN out_name;
END$$
DELIMITER ;