MySQL创建并调用自定义函数方式

 更新时间:2025年05月24日 09:38:08   作者:壹业  
这篇文章主要介绍了MySQL创建并调用自定义函数方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

创建方法拼接SQL

DELIMITER $$
DROP FUNCTION IF EXISTS genPerson$$
CREATE FUNCTION genPerson(name varchar(20)) RETURNS varchar(50)
BEGIN
  DECLARE str VARCHAR(50) DEFAULT '';
  SET @tableName=name;
  SET str=CONCAT('create table ', @tableName,'(id int, name varchar(20));');
  return str;
END $$
DELIMITER ;
  • (1)DELIMITER $$ 定义结束符。MySQL默认的结束符是分号,但是函数体中可能用到分号。为了避免冲突,需要另外定义结束符。
  • (2)DROP FUNCTION IF EXISTS genPerson$$ 如果函数genPerson已经存在了,就删除掉。
  • (3)CREATE FUNCTION 创建函数genPerson,函数的参数是name,返回值是varchar(50)。
  • (4)函数体放在BEGIN 与 END之间。
  • (5)DECLARE 声明变量,str类型是varchar(50),默认值是空。
  • (6)CONCAT连接多个字符串。
  • (7)RETURN 返回拼接后的字符串str。

创建方法直接写SQL

DELIMITER $$
DROP FUNCTION IF EXISTS getNthHighestSalary$$
CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT
BEGIN
	SET N = N -1;
  RETURN (
      # Write your MySQL query statement below.
      select ifnull((select distinct id from user order by id desc limit 1 OFFSET n),null)
  );
END

调用方法

select genPerson('student');
select getNthHighestSalary(2)

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • mysql字符串格式化方式

    mysql字符串格式化方式

    这篇文章主要介绍了mysql字符串格式化方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08
  • mysql中explain用法详解

    mysql中explain用法详解

    EXPLAIN用于SELECT语句中的每个表返回一行信息。表以它们在处理查询过程中将被MySQL读入的顺序被列出
    2013-02-02
  • SQL Server 2005 安装遇到的错误提示和解决方法

    SQL Server 2005 安装遇到的错误提示和解决方法

    在安装SQL Server 2005时有时会出现意想不到的问题,如IIS,性能计数器,OWC11,无法配置外围应用的问题,下面笔者分享一下在安装SQL Server 2005时常见问题解决方法
    2014-01-01
  • Sql查询MySql数据库中的表名和描述表中字段(列)信息

    Sql查询MySql数据库中的表名和描述表中字段(列)信息

    这篇文章主要介绍了Sql查询获取MySql数据库中的表名和描述表中列名数据类型,长度,精度,是否可以为null,默认值,是否自增,是否是主键,列描述等列信息
    2017-12-12
  • .Net Core导入千万级数据至Mysql的步骤

    .Net Core导入千万级数据至Mysql的步骤

    最近在工作中,涉及到一个数据迁移功能,从一个txt文本文件导入到MySQL功能。数据迁移,在互联网企业可以说经常碰到,而且涉及到千万级、亿级的数据量是很常见的。今天我们就来谈谈MySQL怎么高性能插入千万级的数据。
    2021-05-05
  • MySQL Left JOIN时指定NULL列返回特定值详解

    MySQL Left JOIN时指定NULL列返回特定值详解

    我们有时会有这样的应用,需要在sql的left join时,需要使值为NULL的列不返回NULL而时某个特定的值,比如0。这个时候,用is_null(field,0)是行不通的,会报错的,可以用ifnull实现,但是COALESE似乎更符合标准
    2013-07-07
  • MySQL实现差集(Minus)和交集(Intersect)测试报告

    MySQL实现差集(Minus)和交集(Intersect)测试报告

    MySQL没有实现Minus和Intersect功能,就像它也没有实现cube的功能一样。
    2014-06-06
  • MySQL使用binlog2sql工具实现在线恢复数据功能

    MySQL使用binlog2sql工具实现在线恢复数据功能

    binlog2sql 是大众点评开源的一款用于解析 MySQL binlog 的工具,根据不同选项,可以得到原始SQL、回滚SQL等,下面我们就来看看如何使用binlog2sql实现在线恢复数据功能吧
    2025-03-03
  • 将phpstudy中的mysql迁移至Linux教程

    将phpstudy中的mysql迁移至Linux教程

    本文主要给大家介绍了关于将phpstudy中的mysql迁移至Linux的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起看看吧。希望能版助到大家。
    2018-04-04
  • SQL更新与删除数据操作示例详解

    SQL更新与删除数据操作示例详解

    如果要在程序运行过程中操作数据库中的数据,那得先学会使用SQL语句,下面这篇文章主要给大家介绍了关于SQL查询语句更新和删除数据的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-01-01

最新评论