mysql 自定义函数

mysql 自定义函数,是对 mysql 扩展的途径,用法和内置函数相同

在工作中,使用 mysql 自带的函数不能满足需要,进而创建更贴近业务的自定义函数

 

1、创建自定义函数

自定义函数可以接收任意类型的参数,也可以返回任意类型的值

自定义函数基本语法格式如下

CREATE FUNCTION function_name 
RETURNS type
routine_body

function_name  是自定义函数的名字

type 是自定义函数返回值类型

routine_body 是自定义函数的函数体,即自定义函数的具体内容

 

1.1、创建无参数的自定义函数

返回数据库版本

create FUNCTION getversion() 
RETURNS varchar(25)
return ( SELECT CONCAT('mysql数据库版本', VERSION()))

 

执行结果如下

 

1.2、创建有参数的自定义函数

两数求和

CREATE FUNCTION numadd(num1 int , num2 int) 
RETURNS INT
RETURN num1 + num2 

 

运行结果如下

 

1.3、创建具有复合结构函数体的自定义函数

首先创建一张用户表,并添加三条数据,sql 如下

DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
  `user_id` int(20) NOT NULL AUTO_INCREMENT,
  `name` varchar(20) DEFAULT NULL,
  `addr` varchar(20) DEFAULT NULL,
  PRIMARY KEY (`user_id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES ('1', '蔺相如', '山西');
INSERT INTO `user` VALUES ('2', '陈子昂', '四川');
INSERT INTO `user` VALUES ('3', '李开先', '山东');

创建自定义函数如下

添加一条记录,返回最新的总记录数

create FUNCTION addcount(name1 VARCHAR(20), addr1 VARCHAR(20)) 
RETURNS INT
BEGIN
insert into user(name, addr) values(name1, addr1);
return (select count(1) from user);
end

注意:笔者这里使用的是 navicat 和 mysql5.7.25 版本,如果读者使用的是 mysql 命令行客户端,需要使用 DELIMITER $$  定义结束符,因为上边语句中的 ";" 会被mysql 命令行客户端识别为结束符,因此在有";"的函数体中,需要读者额外定义结束符

DELIMITER $$ 
create FUNCTION addcount(name1 VARCHAR(20), addr1 VARCHAR(20)) 
RETURNS INT
BEGIN
insert into user(name, addr) values(name1, addr1);
return (select count(1) from user);
end $$ 

 

运行结果如下

 

2、删除自定义函数

语法格式如下

DROP FUNCTION [IF EXISTS] function_name

function_name 需要删除的自定义函数名

 

删除自定义函数

删除前边创建的自定义函数  addcount

DROP FUNCTION IF EXISTS addcount

DROP FUNCTION addcount

 

 

 

3、使用 navicat 操作自定义函数

3.1、创建自定义函数

打开 navicat 软件,点击上方的函数图标、点击新建函数

选择函数

设置参数

这里先建一个无参数的自定义函数,选择下一步

设置返回值类型,点击完成

定义函数体,保存

设置函数名,确定

这里是 GETVERSION

自定义函数创建完成

测试调用

个人感觉使用 navicat 创建自定义函数并没有简单多少,反而步骤繁琐,不如直接使用命令创建

 

3.2、删除自定义函数

选择要删除的函数,直接点击删除或鼠标右键删除

确定 删除

删除完成

 

 

 

 

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

悟世君子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值