Mysql学习笔记(021)-函数
函数
1 #函数 2 /* 3 含义:一组预先编译的sql语句的集合,理解成批处理语句 4 1.提高代码的重用性 5 2.简化操作 6 3.减少了编译次数并且减少了和数据库服务器的连接次数,提高了效率 7 8 区别: 9 10 存储过程:可以有0个返回,也可以有多个返回,适合批量插入、批量更新 11 函数:有且只有一个返回,适合做处理数据后返回一个方结果 12 13 14 */ 15 16 #一、创建语法 17 CREATE FUNCTION 函数名{参数列表} RETURNS 返回类型 18 BEGIN 19 函数体 20 END 21 /* 22 23 注意: 24 1、参数列表包含两部分; 25 参数名 参数类型 26 27 2、函数体:肯定有return语句,如果没有回报错 28 如果return语句没有放在函数体的最后也不报错,但不建议 29 30 return 值: 31 3、函数体中仅有一句话,则可以省略begin end 32 4、使用delimiter语句设置结束标记 33 34 */ 35 36 #二、调用语法 37 SELECT 函数名(参数列表) 38 39 40 #---------------------案例演示--------------- 41 #1、无参有返回的 42 #案例:返回公司的员工个数 43 CREATE FUNCTION myf1() RETURNS INT 44 BEGIN 45 DECLARE c IN DEFAULT 0;#定义变量 46 SELECT COUNT(*) INTO c#赋值 47 FROM employees; 48 RETURN c; 49 END $ 50 51 SELECT myf1()$ 52 53 #2、有参数有返回 54 #案例1:根据员工名返回他的工资 55 CREATE FUNCTION myf2(empName VARCHAR(20)) RETURNS DOUBLE 56 BEGIN 57 SET @sal=0;#定义了用户变量 58 SELECT salary INTO @sal #赋值 59 FROM employees WHERE last_name=empName; 60 61 RETURN @sal; 62 END $ 63 64 SELECT myf2('kochhar') $ 65 66 #案例2:根据部门名,返回该部门的平均工资 67 CREATE FUNCTION myf3(deptName, VARCHAR(20)) RETURNS DOUBLE 68 BEGIN 69 DECLARE sal DOUBLE; 70 SELECT AVG(salary) INTO sal 71 FROM employees e 72 JOIN departments d ON e.department_id = d.department_id 73 WHERE d.department_name = deptName; 74 75 RETURN sal; 76 END $ 77 78 SELECT myf3('IT') $ 79 80 #三、查看函数 81 SHOW CREATE FUNCTION myf3; 82 83 #四、删除函数 84 DROP FUNCTION myf3; 85 86 87 #案例 88 #一、创建函数,实现传入两个float,返回二者之和 89 90 CREATE FUNCTION test_fun1(num1 FLOAT,num2 FLOAT) RETURNS FLOAT 91 BEGIN 92 DECLARE FLOAT SUM DEFAULT 0; 93 SELECT SUM=num1 + num2 94 RETURN SUM; 95 END $ 96 SELECT test_fun1(1,2)$
案例讲解
小结

浙公网安备 33010602011771号