一、函数和存储过程的区别
关键字 | 调用语法 | 返回值 | 应用场景 | |
---|---|---|---|---|
函数 | FUNCTION | SELECT 函数() | 有且仅有一个 | 一般用于查询结果为一个值并返回时,当有返回值而且仅仅一个 |
存储过程 | PROCEDURE | CALL 存储过程() | 可以有0个或多个 | 一般用于更新 |
二、函数
一、创建语法
(1)语法
CREATE FUNCTION 函数名(参数名 参数类型,...) RETURNS 返回类型
BEGIN
函数体
END
(2)注意事项
- 参数列表包含两部分:参数名和参数类型。
- 函数体:必须有return语句,否则会报错。
- 若函数体中仅有一条语句,则可以省略BEGIN END。
- 使用delimiter语句设置结束标记。
(3)调用函数
SELECT 函数名(实参列表) //执行完函数图中的所有语句,并显示返回值
二、无参数有返回值
(1)举例
返回公司的员工数
(2)代码
DELIMITER $
CREATE FUNCTION myf1() RETURNS INT
BEGIN
DECLARE c INT DEFAULT 0;#定义局部变量
SELECT COUNT(*) INTO c#赋值
FROM employees;
RETURN c;
END $
SELECT myf1() $
(3)运行结果
三、有参数有返回值
(1)举例
根据员工名,返回他的工资
(2)代码
CREATE FUNCTION myf2(empName VARCHAR(20)) RETURNS DOUBLE
BEGIN
SET @sal=0;#定义用户变量
SELECT salary INTO @sal #赋值
FROM employees
WHERE last_name = empName;
RETURN @sal;
END $
SELECT myf2('kochhar') $
(3)运行结果
四、查看函数
(1)语法
SHOW CREATE FUNCTION 函数名;
(2)举例
五、删除函数
DROP FUNCTION 函数名;