mysql 函数

2019-08-28  本文已影响0人  哈斯勒


/*
函数
含义:一组预先编译好的SQL语句的集合
区别:
存储过程:可以有0个返回,也可以有多个返回;适合批量插入,批量更新
函数:有且仅有一个返回;适合处理数据返回一个结果
*/
#一、创建函数
CREATE FUNCTION 函数名(参数列表) RETURNS 返回类型
BEGIN
    函数体
END

/*
注意:
1. 参数列表 包含两部分:参数名,参数类型
2. 函数体:
    肯定会有return语句,如果没有会报错
    如果return语句没有放在函数体的最后也不报错,但不建议
return 值;

3. 当函数体中只有一句话,可以省略begin end
4. 使用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 myf3(empname VARCHAR(20)) RETURNS DOUBLE
BEGIN
    #declare s double default 0;
    SET @s=0;
    #select salary into s
    SELECT salary INTO @s
    FROM employees
    WHERE last_name=empname;
    #return s;
    RETURN @s;
END $
SELECT myf3('Kochhar')$

# 根据部门号,返回部门平均工资

CREATE FUNCTION myf4(deptname VARCHAR(20)) RETURNS DOUBLE
BEGIN
   SET @sal=0;
   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 myf4('Adm')$
#3.函数的查看
SHOW CREATE FUNCTION myf3;
#4.函数的删除
DROP FUNCTION myf3;

#创建函数,输入两个float,返回两者之和
CREATE FUNCTION myf5(var1 FLOAT, var2 FLOAT) RETURNS FLOAT
BEGIN
/*
   Set @r=0;
   select var1+var2 into @r;
   return @r;
  */
  DECLARE SUM FLOAT DEFAULT 0;
  SET SUM=var1+var2;
  RETURN SUM;
END $
SELECT myf5(1.10,2.0)$
上一篇下一篇

猜你喜欢

热点阅读