第 15 章 · 第八节 · 课件第 72、73、74、75 页合并重做
创建函数
RETURNS 声明类型,函数体中用 RETURN 返回值。
创建自定义函数
CREATE FUNCTION 函数名([参数名 类型[, …]])
RETURNS 类型
[特征 …]
BEGIN
函数体
END
与存储过程的不同
- 参数只能是输入参数,不写 IN
- 用 RETURNS 声明返回值的类型
- 函数体中至少要有一条 RETURN 值;
- 要建在其他数据库中,写成 数据库名.函数名
MySQL 8.0 默认开启二进制日志,函数必须声明 DETERMINISTIC、NO SQL、READS SQL DATA 三者之一,否则报错 1418。
例:判断素数
DELIMITER $$
CREATE FUNCTION isprime(m INT)
RETURNS BOOL
NO SQL
BEGIN
DECLARE i INT DEFAULT 2;
IF m <= 1 THEN RETURN FALSE; END IF;
WHILE i <= m - 1 DO
IF m MOD i = 0 THEN
RETURN FALSE;
END IF;
SET i = i + 1;
END WHILE;
RETURN TRUE;
END $$
DELIMITER ;