像存储过程一样,我们也可以创建函数。两者主要的区别在于,函数应该有一个返回值,并且可以在SELECT中调用。通常创建函数是为了简化复杂的计算。

创建方法

使用 CREATE FUNCTION + 函数名 进行创建

  1. DROP FUNCTION IF EXISTS get_sal_level; -- 如果函数已经存在则删除
  2. DELIMITER $$ -- 更改结束分隔符为$$
  3. CREATE FUNCTION get_sal_level(emp int) RETURNS VARCHAR(10)
  4. DETERMINISTIC
  5. BEGIN
  6. DECLARE sal_level varchar(10);
  7. DECLARE avg_sal FLOAT;
  8. SELECT AVG(salary) INTO avg_sal
  9. FROM salaries
  10. WHERE emp_no = emp;
  11. IF avg_sal < 50000 THEN
  12. SET sal_level = '<5W';
  13. ELSEIF (avg_sal >= 50000 AND avg_sal <= 90000) THEN
  14. SET sal_level = '5W-9W';
  15. ELSE
  16. SET sal_level = '>9W';
  17. END IF;
  18. RETURN (sal_level);
  19. END
  20. $$
  21. DELIMITER ;

列出数据库中的所有存储函数

show function status;

检查现有存储函数的定义

show create function + 函数名

show create function get_sal_level\G

image.png