MySQL函数

FUNCTION函数

DECLARE声明

好处:

1.提高代码重用性

2.简化操作

3.减少了编译次数:编译过一次 就不用编译了

4.减少了和服务器连接次数,提高了效率

区别:

存储过程:可以有0个返回,也可以有多个返回。(适合批量的增删改)

函数:有且仅有1个返回。(适合做数据处理后,返回一个结果)

一、创建语法

CREATE FUNCTION 函数名(参数列表) RETURNS 返回类型
BEGIN
函数体
return 值;
END

注意:

1.参数列表包含两部分:参数名,参数类型

没有in out模式

2.函数体:必须有return语句

3.return语句不写在最后也不会报错,但不建议

4.函数体中只有一句话可以省略begin end

5.需要使用 delimiter语句设置结束标记

二、调用语法

SELECT 函数名(参数列表)
执行完里面的语句并且显示返回值
#1.无参有返回
CREATE FUNCTION myf1() RETURNS INT 
BEGIN
            DECLARE c int DEFAULT 0;#定义变量
            SELECT count(*) INTO c#为变量赋值
            FROM employees;
            RETURN c;
END $

SELECT myf1()$


#2.有参有返回
#根据员工名,返回它的工资
CREATE FUNCTION myf2(empName VARCHAR(20)) RETURNS INT
BEGIN
            SET @sal=0; #定义用户变量:当前连接有效
            SELECT salary INTO @sal #赋值
            FROM employees
            WHERE last_name=empName;
            RETURN @sal;
END $

SELECT myf2('Hunold')$

#案例2:根据部门名,返回该部门的平均工资
CREATE FUNCTION myf3(deptName VARCHAR(20)) RETURNS INT
BEGIN
            DECLARE sal DOUBLE;#加不加默认值都行
            SELECT avg(salary) INTO sal
            FROM employees e
            JOIN departments d
            ON e.department_id=d.department_id
            WHERE d.department_name=deptName;
            RETURN sal;            
END $

SELECT myf2('IT')$

三、查看函数

SHOW CREATE FUNCTION myf3;

在MySQL库中proc表能看见存储过程和函数的基本信息

四、删除函数

DROP FUNCTION myf3;

五、修改

很少修改

也只能修改创建时的特点

CREATE FUNCTION myf2(empName VARCHAR(20)) RETURNS INT

begin end 中的语句不能修改

如果要修该只能删除

不能修改存储过程的逻辑语句

#创建函数,实现传入两个float,返回二者之和
CREATE FUNCTION test_fun1(num1 FLOAT,num2 FLOAT) RETURNS FLOAT
BEGIN
            DECLARE sum FLOAT DEFAULT 0;
            SET sum=num1+num2;
            RETURN sum;
END$

SELECT test_fun1(1,2)$

  

原文地址:https://www.cnblogs.com/rijiyuelei/p/12382177.html