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利用百度ai实现文本和图片审核
之前做平台内容发布审核都是自己构建一套违禁词库,在代码中利用词库判断用户发布的内容,现在可以使用百度ai api完成这个功能.接下来就简单说下怎么做吧: 首先打开百度ai 开发平台 注册一个账号: 注 ...
- buu yxx
一.这题是南邮的题,异性相吸改编过来的,不过那题有给提示,这题没有233 不过做法确是一样的,winhex打开 直接异或,做法是一样的,直接对应的异或就可以了 a="lovelovelove ...
- PID算法控制直流电机笔记
1.将偏差的比例.积分和微分通过线性组合构成控制量,用这一控制量对被控对象进行控制,这样的控制器称为PID控制器.简单说就是根据系统的误差,利用比例.积分.微分计算出控制量进行控制. 2.为什么需要P ...
- 性能基准DevOps之如何提升脚本执行效率
1.宝路说 宝路最近一直在自我思考:性能基准DevOps工作已经开展一段时间了,目前我们确实已经取得了一些成果,显然这还远远不够.趁闲暇之余跟组员进行了简单的头脑风暴!于是这就有了今天的主题,当然这仅 ...
- ArrayList 从源码角度剖析底层原理
本篇文章已放到 Github github.com/sh-blog 仓库中,里面对我写的所有文章都做了分类,更加方便阅读.同时也会发布一些职位信息,持续更新中,欢迎 Star 对于 ArrayList ...
- 深度解析CSS中的单位以及区别
css中有几个不同的单位表示长度,使用时数字加单位.如果长度为0,则可以省略单位. 长度单位可分为两种类型:相对和绝对. 绝对长度 绝对长度单位是一个固定的值,反应真实的物理尺寸,不依赖于显示器.分辨 ...
- [Vue warn]: “TypeError: Cannot read property ‘slideTo‘ of undefined“
问题: 使用Vue插件swiper,报如下bug: 解决: 报错原因: vue-awesome-swiper下载版本问题 解决: 如果写成下面这样报错: 则加上$ 反之,删除$ 问题解决
- Python 机器学习实战 —— 无监督学习(上)
前言 在上篇<Python 机器学习实战 -- 监督学习>介绍了 支持向量机.k近邻.朴素贝叶斯分类 .决策树.决策树集成等多种模型,这篇文章将为大家介绍一下无监督学习的使用.无监督学习顾 ...
- vulnhub-DC:2靶机渗透记录
准备工作 在vulnhub官网下载DC:1靶机https://www.vulnhub.com/entry/dc-2,311/ 导入到vmware 打开kali准备进行渗透(ip:192.168.200 ...
- BOM(Bill of Material)物料清单基础知识(一)
一.BOM的基础概念 概 ...