MySQL自定义函数与存储过程的创建、使用、删除
前言
日常开发中,可能会用到数据库的自定义函数/存储过程,本文记录MySQL对自定义函数与存储过程的创建、使用、删除的使用
通用语法
事实上,可以认为存储过程就是没有返回值的函数,创建/使用/删除都非常相似,在Navicat可视化工具中,自定义函数/存储过程都归类为函数

定义变量
-- 定义变量,以及赋默认值0
DECLARE c INT(2) DEFAULT(0);
设置变量
-- 设置变量值
SET c = c + 1;
流程控制
-- 流程控制,多条件使用 AND/OR
IF c < 0 OR c = 0 THEN
set c = 0;
ELSEIF c IS NULL THEN
set c = 0;
ELSE
set c = c;
END IF;
循环语句
-- 循环语句
WHILE c <= 10 DO SET c = c + 1;
END WHILE;
自定义函数
创建
-- 创建函数
DROP FUNCTION IF EXISTS test_fun;
CREATE FUNCTION test_fun ( a INT(2), b INT(2) ) RETURNS INT(2) BEGIN
-- 定义变量,以及赋默认值
DECLARE c INT(2) DEFAULT(0);
DECLARE i INT(2) DEFAULT(1); -- 流程控制
IF a < 0 OR b < 0 THEN
set a = 0;
set b = 0;
ELSEIF a IS NULL AND b IS NULL THEN
set a = 0;
set b = 0;
ELSE
set a = a;
set b = b;
END IF; -- 设置变量值
SET c = a + b; -- 循环
WHILE i <= 10 DO
SET c = c + i; SET i = i + 1;
END WHILE; -- return返回值
RETURN c;
END;

使用
-- 使用函数
SELECT test_fun ( 1, 2 );

删除
-- 删除函数
DROP FUNCTION test_fun;

存储过程
创建
-- 创建存储过程
DROP PROCEDURE IF EXISTS test_pro;
CREATE PROCEDURE test_pro ( a INT(2), b INT(2) ) BEGIN
-- 定义变量,以及赋默认值
DECLARE c INT(2) DEFAULT(0); -- 流程控制
IF a < 0 OR b < 0 THEN
set a = 0;
set b = 0;
ELSEIF a IS NULL AND b IS NULL THEN
set a = 0;
set b = 0;
ELSE
set a = a;
set b = b;
END IF; -- 设置变量值
SET c = a + b; -- 关闭自动提交,mysql每次执行一条语句都默认自动提交,去掉自动提交可大大提高批量操作性能
SET autocommit = 0; -- 循环
WHILE c <= 10 DO
-- 执行SQL语句,获取1-4随机数
SELECT floor( 1 + rand() * 4 ); SET c = c + 1;
END WHILE; -- 开启自动提交
SET autocommit = 1; -- 模拟返回值,存储过程不能return
SELECT c;
END;

使用
-- 使用存储过程
CALL test_pro ( 1, 2 );


删除
-- 删除存储过程
DROP PROCEDURE test_pro;

后记
MySQL对自定义函数与存储过程的创建、使用、删除的使用暂时先记录到这,后续再进行补充
MySQL自定义函数与存储过程的创建、使用、删除的更多相关文章
- MySQL自定义函数与存储过程
1.前置条件 MySQL数据库中存在表user_info,其结构和数据如下: mysql> desc user_info; +-----------+----------+------+---- ...
- MySQL自定义函数和存储过程的区别:
自定义函数和存储过程的区别: 1)一般来说,存储过程实现的功能要复杂一点,而函数的实现的功能针对性比较强.存储过程,功能强大,可以执行包括修改表等一系列数据库操作:用户定义函数不能用于执行一组修改全局 ...
- mysql创建自定义函数与存储过程
mysql创建自定义函数与存储过程 一 创建自定义函数 在使用mysql的过程中,mysql自带的函数可能不能完成我们的业务需求,这时就需要自定义函数,例如笔者在开发过程中遇到下面这个问题 mysql ...
- MYSQL数据库重点:自定义函数、存储过程、触发器、事件、视图
一.自定义函数 mysql自定义函数就是实现程序员需要sql逻辑处理,参数是IN参数,含有RETURNS字句用来指定函数的返回类型,而且函数体必须包含一个RETURN value语句. 语法: 创建: ...
- mysql自定义函数并在存储过程中调用,生成一千万条数据
mysql 自定义函数,生成 n 个字符长度的随机字符串 -- sql function delimiter $$ create function rand_str(n int) returns VA ...
- mysql 自定义函数
原文:http://www.cnblogs.com/zhangminghui/p/4113160.html 引言 MySQL本身提供了内置函数,这些函数的存在给我们日常的开发和数据操作带来了很大的便利 ...
- MySQL自定义函数(四十六)
MySQL自定义函数 一.什么是MYSQL自定义函数? mysql当中的自定义函数,我们简称为UDF,它实际上是一种对MySQL扩展的途径,其用法与内置函数相同. 二.自定义函数应该具备哪些条件? 我 ...
- sqlserver自定义函数与存储过程的区别 实例详解
分享下sql server自定义函数与存储过程的区别,一起来学习下. 一.自定义函数: 1. 可以返回表变量 2. 限制颇多,包括 不能使用output参数: 不能用临时表: 函数内部的操作不能影响到 ...
- MySQL 自定义函数CREATE FUNCTION实例
分享一个MySQL 自定义函数CREATE FUNCTION的实例.mysql> delimiter $$mysql> CREATE FUNCTION myFunction-> (i ...
随机推荐
- 看看PHP迭代器的内部执行过程(转)
1 class myIterator implements Iterator { 2 private $position = 0; 3 private $array = array( 4 &quo ...
- buu [BJDCTF2020]easyrsa
下载附件是一个py文件,打开之后,发现是常规的rsa,不过有几个函数不知道. 这里记录一下, Fraction(a,b) 相当于 a/b Derivative(f(x),x) : 当x='x'时,f( ...
- buu 相册
一.拖入jeb,这个神器里面,感觉对jeb使用还是不熟悉,对我逆向产生了一些障碍. 抓住题目给的提示,邮箱,全局直接搜索,mail. 看下它的交叉引用 找到了发邮件的方法, C2的MAILFROME说 ...
- HCNA Routing&Switching之路由基础
在开始聊路由之前,我们首先要明白在网络通讯里,什么是路由?什么是路由表.路由器以及网关的相关术语:路由简单讲就是指网络数据包从源头到目标的路径,主要用来为不同网络间通讯提供数据包转发依据:路由表就是多 ...
- python使用笔记25--深拷贝、浅拷贝
1.循环删除list 1 ll = [1,1,32,4,3,2,3,2,4,6,4,5,6,7,8] 2 for i in ll: 3 if i % 2 !=0: 4 ll.remove(i) 5 p ...
- java网络编程基础——TCP网络编程一
基于TCP协议的网络编程 TCP/IP协议是一种可靠的网络协议,它的通信的两端各自建立一个Socket,从而在通信的两端之间形成网络虚拟链路. Java使用Socket对象来代表两端的通信端口,并通过 ...
- 深入GraphQL 的使用语法
深入GraphQL 的使用语法 对于GraphQL 的使用语法在上一节中已经大概介绍了基本的使用方式了,这一篇将会对上一篇入门做拓展,努力将所有的使用语法都覆盖到. 1. 终端语法 首先是介绍在前端查 ...
- debian9 独显安装后进入不了桌面解决方法
# apt-get purge nvidia. # /etc/init.d/sddm stop (sddm for kde) # aptitude --without-recommends insta ...
- YsoSerial 工具常用Payload分析之CC3(二)
这是CC链分析的第二篇文章,我想按着common-collections的版本顺序来介绍,所以顺序为 cc1.3.5.6.7(common-collections 3.1),cc2.4(common- ...
- 【洛谷P1061 Jam的计数法】搜索
分析 超级暴力,在尾部+1,再判断. AC代码 type arr=array[0..27]of longint; var st:string; a:array[0..27]of longint; s, ...