美文网首页
MySQL自定义函数

MySQL自定义函数

作者: 老羊_肖恩 | 来源:发表于2023-01-05 23:15 被阅读0次

  MySQL除了内置了丰富的函数方便用户调用外,还支持用户进行自定义函数。自定义函数与存储过程类似,也是一组预先编译好的SQL语句的集合。但是自定义函数和存储过程还是有着较大的区别:存储过程可以没有返回值,或者有多个返回值,一般用来实现批量插入、批量更新等操作;自定义函数有且仅有一个返回值,因此适合用于处理数据后返回一个特定的结果。

函数创建

  MySQL中自定义函数的语法如下所示:

CREATE FUNCTION '函数名称'('参数1' '参数1类型', '参数2' '参数2类型', ... ) RETURNS '返回值类型'
BEGIN
  DECLARE '变量名' '变量类型' default '变量默认值';
  SET '参数设置'; 
  'SQL语句';
  RETURN 返回值;
END;

  我以Leetcode中的177. 第N高的薪水为例,演示一下自定义函数的创建。该题要求从下面这个表中查找出薪资排名第N的人的薪资:

Create table If Not Exists Employee (Id int, Salary int)
+-------------+------+
| Column Name | Type |
+-------------+------+
| id          | int  |
| salary      | int  |
+-------------+------+

  下面是关于这题的一种解答,可以通过如下的自定义函数来实现:

--创建一个函数返回排名第N的薪水
CREATE FUNCTION getNthHighestSalary(--定义函数名称
    N INT                         --定义函数入参名称及类型
) RETURNS INT                     --定义函数返回值类型
BEGIN                             -- 标识函数体开始
    DECLARE ans INT default NULL; --定义一个整型变量,用于保存最后的结果,默认为null 
    SET N = N - 1;                --设置参数值,将原值-1
    --SQL语句
    SELECT DISTINCT salary INTO ans--将SELECT的结果赋值给变量ans
    FROM Employee 
    ORDER BY salary DESC LIMIT N,1;
    RETURN ans;                   --返回函数结果
END;                              -- 标识函数体结束

函数调用

select '函数名称'('参数列表')

  比如上面我们定义的求第N高薪水的函数的调用方式如下:

select getNthHighestSalary(3)

查看、删除

  查看和删除自定义函数的语法如下所示:

show create function '函数名称'
drop function '函数名称'

相关文章

  • 自定义函数

    自定义函数 用户自定义函数(user-defined function, UDF)是一种对MySQL扩...

  • MySQL之:函数

    函数:系统函数和自定义函数 系统函数: https://dev.mysql.com/doc/refman/5.7/...

  • MySQL自定义函数和存储过程

    自定义函数: 概念:用户自定义函数(user-defined function,UDF)是一种对 MySQL 扩展...

  • 9、MySQL函数

    MySQL中提供了许多内置函数,例如: 1、自定义函数 2、删除函数 3、执行函数

  • sql自学笔记(九)

    自定义函数:简称UDF,是对MySQL扩展的的一种途经。创建自定义函数:CREATE TUNCTION .......

  • (八)自定义函数

    1、自定义函数 用户自定义函数(user-defined function,UDF)是一种对MySQL扩展的途径,...

  • 2018-11-20 MySQL过程与存储过程

    MYSQL函数 UDF { 用户自定义函数 } 自定义函数的两个必要条件 { 1.参数 2.返回值 函数可以返回任...

  • 自定义函数

    自定义函数用户自定义函数(user-defined function,UDF)是一种对MySQL扩展的途径,其用法...

  • 第八章 MySQL存储过程

    课程回顾 自定义函数:简称UDF;是对MySQL扩展的一种途径 创建自定义函数:CREATE FUNCTION.....

  • 六、MySQL自定义函数

    1、自定义函数简介 用户自定义函数(user-defined function,UDF)是一种对MySQL扩展的途...

网友评论

      本文标题:MySQL自定义函数

      本文链接:https://www.haomeiwen.com/subject/fyojcdtx.html