MySQL自定义函数(CREATE FUNCTION)
在使用 MySQL 的过程中,MySQL 自带的函数可能完成不了我们的业务需求,这时候就需要自定义函数。
自定义函数是一种与存储过程十分相似的过程式数据库对象。它与存储过程一样,都是由 SQL 语句和过程式语句组成的代码片段,并且可以被应用程序和其他 SQL 语句调用。
自定义函数与存储过程之间存在几点区别:
- 自定义函数不能拥有输出参数,这是因为自定义函数自身就是输出参数;而存储过程可以拥有输出参数。
- 自定义函数中必须包含一条 RETURN 语句,而这条特殊的 SQL 语句不允许包含于存储过程中。
- 可以直接对自定义函数进行调用而不需要使用 CALL 语句,而对存储过程的调用需要使用 CALL 语句。
创建并使用自定义函数
可以使用 CREATE FUNCTION 语句创建自定义函数。
语法格式如下:
CREATE FUNCTION <函数名> ( [ <参数1> <类型1> [ , <参数2> <类型2>] ] … )
RETURNS <类型>
<函数主体>
语法说明如下:
<函数名>
:指定自定义函数的名称。注意,自定义函数不能与存储过程具有相同的名称。<参数><类型>
:用于指定自定义函数的参数。这里的参数只有名称和类型,不能指定关键字 IN、OUT 和 INOUT。RETURNS<类型>
:用于声明自定义函数返回值的数据类型。其中,<类型>
用于指定返回值的数据类型。<函数主体>
:自定义函数的主体部分,也称函数体。所有在存储过程中使用的 SQL 语句在自定义函数中同样适用,包括前面所介绍的局部变量、SET 语句、流程控制语句、游标等。除此之外,自定义函数体还必须包含一个RETURN<值>
语句,其中<值>
用于指定自定义函数的返回值。
在 RETURN VALUE 语句中包含 SELECT 语句时,SELECT 语句的返回结果只能是一行且只能有一列值。
若要查看数据库中存在哪些自定义函数,可以使用 SHOW FUNCTION STATUS 语句;若要查看数据库中某个具体的自定义函数,可以使用 SHOW CREATE FUNCTION<函数名> 语句,其中<函数名>
用于指定该自定义函数的名称。
【实例 1】创建存储函数,名称为 StuNameById,该函数返回 SELECT 语句的查询结果,数值类型为字符串类型,输入的 SQL 语句和执行结果如下所示。
mysql> CREATE FUNCTION StuNameById() -> RETURNS VARCHAR(45) -> RETURN -> (SELECT name FROM tb_students_info -> WHERE id=1); Query OK, 0 rows affected (0.09 sec)
注意:当使用 DELIMITER 命令时,应该避免使用反斜杠“”字符,因为反斜杠是 MySQL 的转义字符。
成功创建自定义函数后,已经为大家精心准备了大数据的系统学习资料,从Linux-Hadoop-spark-......,需要的小伙伴可以点击就可以如同调用系统内置函数一样,使用关键字 SELECT 调用用户自定义的函数,语法格式为:
SELECT <自定义函数名> ([<参数> [,…]])
【实例 2】调用自定义函数 StuNameById,查看函数的运行结果,如下所示。
mysql> SELECT StuNameById(); +---------------+ | StuNameById() | +---------------+ | Dany | +---------------+ 1 row in set (0.24 sec)
修改自定义函数
可以使用 ALTER FUNCTION 语句来修改自定义函数的某些相关特征。若要修改自定义函数的内容,则需要先删除该自定义函数,然后重新创建。
删除自定义函数
自定义函数被创建后,一直保存在数据库服务器上以供使用,直至被删除。删除自定义函数的方法与删除存储过程的方法基本一样,可以使用 DROP FUNCTION 语句来实现。
语法格式如下:
DROP FUNCTION [ IF EXISTS ] <自定义函数名>
语法说明如下。
<自定义函数名>
:指定要删除的自定义函数的名称。
IF EXISTS
:指定关键字,用于防止因误删除不存在的自定义函数而引发错误。
【实例 3】删除自定义函数 StuNameById,查看函数的运行结果,如下所示。
mysql> DROP FUNCTION StuNameById; Query OK, 0 rows affected (0.09 sec) mysql> SELECT StuNameById(); ERROR 1305 (42000): FUNCTION test_db.StuNameById does not exist
MySQL自定义函数(CREATE FUNCTION)相关推荐
- mysql自定义函数的分号_MySQL之自定义函数实例讲解
转自:https://www.2cto.com/database/201804/740205.html MySQL中已经有很多函数,如时间函数等,但是有时这些函数不能满足自己的设计需求,此时需要自定义 ...
- 数据库系列之mysql 自定义函数function,函数和存储过程的区别
mysql 自定义函数function,函数和存储过程的区别 https://blog.csdn.net/u010365819/article/details/80470448 https://blo ...
- mysql 自定义函数function,函数和存储过程的区别
From: https://blog.csdn.net/u010365819/article/details/80470448 1.MySQL自定义函数简介 在MySQL中使用自定义函数也需要相应的要 ...
- mysql自定义函数应用_mysql functions实例:在自定义函数中应用字符串函数
分享一段mysql自定义函数的代码,在其中用到了mysql的字符串函数length. 代码: mysql> delimiter $$ mysql> CREATE FUNCTION myFu ...
- mysql 自定义函数入门_【转】MYSQL入门学习之十三:自定义函数的基本操作
转载地址:http://www.2cto.com/database/201212/177382.html 一.自定义函数(UDF)的特性和功能 www.2cto.com 函数能分返回字符串,整数或实 ...
- MySQL自定义函数的使用
MySQL字定义函数是对sql代码集的封装,我将分享有参数与没有参数的自定义函数的使用 studentinfo表数据: 自定义函数的创建.调用.删除 语法 无参数的自定义函数 # 无参数自定义函数 D ...
- mysql 自定义函数教程_MySQL自定义函数
MySQL自定义函数 函数与存储过程类似,也是一组预先编译好的SQL语句的集合,但是存储过程可以有0个或多个返回,函数就只能有一个返回 创建函数 #语法 参数列表包含两部分 参数名和参数类型 #函数体 ...
- MySQL自定义函数(四十六)
MySQL自定义函数 一.什么是MYSQL自定义函数? mysql当中的自定义函数,我们简称为UDF,它实际上是一种对MySQL扩展的途径,其用法与内置函数相同. 二.自定义函数应该具备哪些条件? 我 ...
- mysql 自定义函数教程_Mysql 自定义函数
Mysql 自定义函数怎么用 CREATE FUNCTION `strip_tags`($str text) RETURNS text BEGIN DECLARE $start, $end INT D ...
- mysql自定义函数的分号_MySQL 第八篇:自定义函数、存储过程、游标-阿里云开发者社区...
我把MySQL的内容整理成9篇博客,学完这9篇博客虽不能说能成为大神,但是应付一般中小企业的开发已经足够了,有疑问或建议的欢迎留言讨论. 自定义函数 一.函数的概念与定义 1.理解函数 函数可以看作是 ...
最新文章
- Entity Framework 使用注意:Where查询条件中用到的关联实体不需要Include
- PHP版本选择讲解:VC6与VC9,Thread Safe与None-Thread Safe等的选择
- javascript打印1-100内的质数
- CVE-2020-11945 Squid未授权整数溢出分析
- 开课吧课堂之何时调用构造函数
- 最近任务 react文章列表
- mysql 覆盖式索引_【MySQL】性能优化之 覆盖索引
- hdu 2196(求树上每个节点到树上其他节点的最远距离)
- Algorithms(forth edition),算法(第四版) algs4.jar 与 algs4-data.zip 网盘下载
- position:fixed;支持ie6,清除e6下抖动。
- JDBC的批处理和事务
- bzoj 1864 三色二叉树
- SIP音调通话调研结果
- 使用Centos7部署静态网站
- 已更新或删除的行值要么不能使该行成为唯一行,要么改变了多个行(2行)
- 基于一维卷积神经网络的滚动轴承故障识别
- Apache Zeppelin 简单介绍,以及下载地址
- 45-网上商城数据库-商品分类数据操作(二)
- k线形态python_如何用Python量化“相似K线”实现形态选股?
- HDOJ2036改革春风吹满地笔记——任意多边形求面积
热门文章
- DL之FastR-CNN:Fast R-CNN算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略
- Py之gensim:gensim的简介、安装、使用方法之详细攻略
- Ubuntu16.04 安装谷歌浏览器并配置常用插件与扩展
- dijkstra 的优先队列优化
- JS_dom查询节点
- ecshop php5.4以上版本错误之preg_replace 替换成 preg_replace_callback
- 已经到了快元旦,可是总是不自在
- 关于UNION ALL与 UNION 用法和区别
- thinkphp 创建子应用
- ESP8266的一个小问题