函数
函数和存储过程的区别
函数: 有且仅有一个返回,适合做数据处理后返回一个结果
存储过程: 可以有0个返回,也可以有多个返回,适合做批量插入,批量更新
语法:
CREATE FUNCTION 函数名(参数列表) RETURNS
BEGIN
函数体
END
注意:
- 参数列表 包含两部分:
参数名 参数类型
- 函数体:肯定会有 RETURN 语句, 如果没有会报错,如果return 语句没有放在函数体的最后一句,也不会报错。但不建议
- 函数体中只有一句话,就可以省略begin end
- 使用 delimiter 语句 设置结束标记
调用语法
SELECT 函数名(参数列表);
案例1: 返回admin 表中拥有多少条记录
# 定义一个函数
CREATE FUNCTION myf1() RETURN INT
BEGIN
DECLARE c INT DEFAULT 0;
SELECT COUNT(*) INTO c
FROM employees;
RETURN c
END$
# 调用该函数
SELECT myf1()$
# 返回
+--------+
| myf1() |
+--------+
| 3 |
+--------+
案例2: 根据id 返回这个用户的姓名
CREATE FUNCTION my2(id INT ) RETURNS VARCHAR
BEGIN
DECLARE name VARCHAR DEFAULT "没有";
SELECT admin.aName INTO name
FROM admin
WHERE admin.id = id;
RETURN name;
END $
# 调用
SELECT my2(1) $
查看函数
SHOW CREATE FUNCTION myf3;
删除函数
DROP FUNCTION myf3;