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 ...
随机推荐
- 用swoole实现异步任务队列
应用场景如下: 假如要发100封邮件,for循环100遍,这种方法显然是不可取的. 在一些比较繁杂的业务里,我们很可能有超过1万的邮件要群发.那我们怎么处理这个延迟的问题? 答案就是用异步.把&quo ...
- 备战-Java 容器
备战-Java 容器 玉阶生白露,夜久侵罗袜. 简介:备战-Java 容器 一.概述 容器主要包括 Collection 和 Map 两种,Collection 存储着对象的集合,而 Map 存储着k ...
- JDK环境配置: javac is not recognized as an internal or external command, operable program or batch file
相信大家在配置TestNG的时候,首先都会去确认JDK的安装是否正确,两个命令缺一不可. 打开'cmd' --> 1. 输入'java -version', 返回java home当前路径. j ...
- sql2008编辑前200行怎么修改
打开Microsoft SQL Server Management Studio--工具菜单--选项---SQL Server对象资源管理器---命令--右侧"编辑前n行命令的值:1000
- ZooKeeper 分布式锁 Curator 源码 02:可重入锁重复加锁和锁释放
ZooKeeper 分布式锁 Curator 源码 02:可重入锁重复加锁和锁释放 前言 加锁逻辑已经介绍完毕,那当一个线程重复加锁是如何处理的呢? 锁重入 在上一小节中,可以看到加锁的过程,再回头看 ...
- 在 Intenseye,为什么我们选择 Linkerd2 作为 Service Mesh 工具(Part.1)
在 Intenseye,我们 follow(跟随) trends(趋势) & hype(最被炒作) 的技术,并在使用时应用最佳实践. 我们在用 Scala.Go.Python 等编写的 Kub ...
- 基于SSM酒店管理系统mysql版本(前后台)
介绍:spring,springmvc,mybatis,mysql,eclipse 截图: 数据库表:CREATE TABLE `account` ( `id` int(11) NOT NULL AU ...
- response 重定向
背景: controller层需要重定向到其他html界面时,需要用如下代码 // 设置302状态码 response.setStatus(302); // 设置location响应头 respons ...
- C#计算复利方法
复利即是指利滚知利 如存入1000,年利息回0.003,存了答10年,则调用fl(0.003,1000,10); double fl(double rate,double cash,int times ...
- ElasticSearch简介和快速实战
ElasticSearch简介和快速实战 ElasticSearch与Lucene Lucene可以被认为是迄今为止最先进.性能最好的.功能最全的搜索引擎库(框架) 但是想要使用Lucene,必须使用 ...