MySQL 存储过程 循环处理数据 while repeat
最近搞数据,需要搞搞mysql 的存储过程,很多忘记了,就查查,然后总结下。。
文章目录
- 介绍
- 循环repeat方式
- 循环while方式
- 外传
介绍
MySQL存储过程中使用循环处理数据
存储过程就像一份写好的由多条SQL组合的代码,这份SQL就像函数一样,可以接受传入参数,可以返回结果。传入参数使用in,传出参数使用out,参数名不要使用关键字!
循环repeat方式
存储过程传入参数
create procedure maxprice(IN _title varchar(20), OUT maxPrice int)
beginselect max(bill.repertory*bill.price) into maxPricefrom bill where title = _title;
end;
存储过程传出参数
create procedure maxprice(OUT maxPrice int)
beginselect max(bill.repertory*bill.price) into maxPricefrom bill;
end;
调用上述存储过程
call maxprice(@maxPrice);
select @maxPrice;
存储过程中使用游标,处理数据
重点
declare my_cursor cursor for -- 申明游标
open my_cursor ;
close my_cursor -- 打开游标,关闭游标
repeat; until done end repeat; -- 循环,直到done为1停止
declare done boolean default 0; -- 申明监视sqlstate变量
declare continue handler for sqlstate '02000' set done = 1; -- done是一个监视sqlstate的变量
createdefiner = root@localhost procedure prls()
begindeclare done boolean default 0;declare _name varchar(20);declare _time datetime;declare _password varchar(20);declare ordernum cursor forselect user_name, create_time, user_password from user_copy;-- 根据sqlstate设置继续与否declare continue handler for sqlstate '02000' set done = 1;open ordernum;repeatfetch ordernum into _name,_time,_password;insert into user(user_name, create_time, user_password) value (_name,_time,_password);until done end repeat;close ordernum;
end;
循环while方式
-- 多个入参数
CREATE PROCEDURE role_permission_data (IN _existCode VARCHAR(20), IN _insertCode varchar(20), IN _excludeCode varchar(20), IN _excludeCode2 varchar(20), IN _excludeCode3 varchar(20)) BEGIN-- 定义变量declare _role_id int;declare _merchant_id int;declare role_count int;-- 获取循环的数据declare roles CURSOR FOR select t.role_id,m.merchant_id from t_role_module_permission t, t_merchant_permission m where t.module_permission_id = m.id AND t.delete_flag = 0 AND m.`code` = _existCode and m.status = 1 GROUP BY t.role_id ,m.merchant_id;-- 获取循环的计数SET role_count=(SELECT count(*) from (select t.role_id from t_role_module_permission t, t_merchant_permission m where t.module_permission_id = m.id AND t.delete_flag = 0 AND m.`code` = _existCode and m.status = 1 GROUP BY t.role_id,m.merchant_id) as dddd);-- 打开游标OPEN roles;-- 对参数赋值FETCH roles INTO _role_id,_merchant_id;-- while循环WHILE role_count > 0 DO-- 获取动态参数select @insertPermissionId:=(select id from t_merchant_permission where code=_insertCode and `status`=1 and merchant_id = _merchant_id);-- 监控下数据SELECT @msg:=CONCAT('_merchant_id:',_merchant_id,',_role_id:',_role_id,',@insertPermissionId:',@insertPermissionId);INSERT INTO t_role_module_permission SELECT null,_role_id,id,0,sub_type from t_merchant_permission where id=@insertPermissionId and `STATUS`=1 and `code` not in (_excludeCode,_excludeCode2,_excludeCode3);INSERT INTO t_role_module_permission SELECT null,_role_id,id,0,sub_type from t_merchant_permission where parent_id = @insertPermissionId and `STATUS`=1 and `code` not in (_excludeCode,_excludeCode2,_excludeCode3);-- 计数器计算SET role_count = role_count - 1;-- 赋值下个游标中的参数FETCH roles INTO _role_id,_merchant_id;END WHILE;-- 关闭游标CLOSE roles;
END;
外传
😜 原创不易,如若本文能够帮助到您的同学
🎉 支持我:关注我+点赞👍+收藏⭐️
📝 留言:探讨问题,看到立马回复
💬 格言:己所不欲勿施于人 扬帆起航、游历人生、永不言弃!🔥相关文章:
MySQL 存储过程 循环处理数据 while repeat
最近搞数据,需要搞搞mysql 的存储过程,很多忘记了,就查查,然后总结下。。 文章目录 介绍循环repeat方式循环while方式外传 介绍 MySQL存储过程中使用循环处理数据 存储过程就像一份写好的由多条SQL组合的代码,这份SQ…...
基于配置类方式管理 Bean
目录 一、完全注解开发理解 二、配置类和扫描注解 三、Bean定义组件 四、Bean注解细节 五、import 扩展 一、完全注解开发理解 Spring 完全注解配置(Fully Annotation-based Configuration)是指通过 Java配置类 代码来配置 Spring 应用程序&#…...
最新CMS指纹识别技术
指纹识别 1.CMS简介 CMS(Content Management System,内容管理系统),又称整站系统或文章系统,用于网站内容管理。用户只需下载对应的CMS软件包,部署、搭建后就可以直接使用CMS。各CMS具有独特的…...
快速入门学习记录:常用代码、特定函数、复杂概念和特定功能说明
😀前言 本篇博文是关于Java入门学习的一些常用记录,希望你能够喜欢 🏠个人主页:晨犀主页 🧑个人简介:大家好,我是晨犀,希望我的文章可以帮助到大家,您的满意是我的动力&a…...
【win视频播放器】HEVC视频扩展
问题描述: 播放此视频需要新的编解码器 编解码器允许应用读取并播放不同文件。可以从Microsoft Store下载该编解码器 ¥7.00 现在获取 稍后再说 解决方法: 方法一:(该方法我正常使用) 链接:ht…...
React+Typescript 父子组件事件传值
好 之前我们将 state 状态管理简单过了一下 那么 本文 我们来研究一下事假处理 点击事件上文中我们已经用过了 这里 我们就不去讲了 主要来说说 父子之间的事件 我们直接来编写一个小dom 我们父组件 编写代码如下 import Hello from "./components/hello";functio…...
python人工智能和机器学习
人工智能和机器学习是当今科技领域最热门和前沿的话题之一。随着数据的爆炸式增长和计算能力的提升,人工智能和机器学习在各个领域都有广泛的应用。Python作为一种易学易用且功能强大的编程语言,已经成为人工智能和机器学习的首选工具之一。本文将介绍Py…...
[PyTorch][chapter 51][Auto-Encoder -1]
目录: 简介 损失函数 自动编码器的类型 一 AutoEncoder 简介: 自动编码器是一种神经网络,用于无监督学习任务.(没有标签或标记数据), 例如降维,特征提取和数据压缩. 主要任务: 1: 输入数据 …...
Uniapp或者微信小程序如何动态的计算Scrollview的高度
当一个小程序页面,顶部有搜索栏,或者分类查询时,我们想要保证它们能固定到顶部,就需要使用到Scrollview,那么如何确定Scrollview就是一个问题,这时我们可以使用以下代码来实现 setScrollHeight(view #scr…...
Abase数据库管理系统
Abase数据库管理系统的架构介绍如下: 1. 概述 Abase是一个开源的分布式数据库中间件,实现MySQL数据库的自动扩缩容、故障转移和查询路由。 2. 功能架构 - 读写分离:拆分为主从两套服务 - 自动扩缩容:根据负载水平完成扩容 - 负载均衡:基于查询解析的路由 - 故障转移:快速切换…...
系统架构设计高级技能 · 大数据架构设计理论与实践
系列文章目录 系统架构设计高级技能 软件架构概念、架构风格、ABSD、架构复用、DSSA(一)【系统架构设计师】 系统架构设计高级技能 系统质量属性与架构评估(二)【系统架构设计师】 系统架构设计高级技能 软件可靠性分析与设计…...
ubuntu上使用osg3.2+osgearth2.9
一、介绍 在ubuntu上使用osgearth加载三维数字地球,首先要有osg和osgearth的库,这些可以直接使用apt-get下载安装,但是版本有些老,如果需要新版本的就需要自己编译。 #查看现有版本 sudo apt-cache madison openscenegraph #安装…...
C语言巧妙打印64位整数
使用C语言打印64位整数时,如果用的是32位编译器,那么打印如下, int64_t data 0x1234567890123456; printf("0x%llx\n", data);如果是64位编译器,那么打印代码如下, int64_t data 0x1234567890123456; pr…...
c语言每日一练(11)
前言:每日一练系列,每一期都包含5道选择题,2道编程题,博主会尽可能详细地进行讲解,令初学者也能听的清晰。每日一练系列会持续更新,暑假时三天之内必有一更,到了开学之后,将看学业情…...
SLAM十四讲学习笔记 第二期:部分课后实践代码
持续更新.... 前期准备第二讲实验一:简单输出 第五讲任务一:imageBasics(Ubuntu配置opencv)任务二:双目匹配点云(Ubuntu配置pangolin)检验部分我认为可以加深对CMake的理解 任务三:r…...
Android kotlin 跳转手机热点开关页面和判断热点是否打开
Android kotlin 跳转手机热点开关页面和判断热点是否打开 判断热点是否打开跳转手机热点开关页面顺带介绍一些其他常用的设置页面跳转 其他热点的一些相关知识Local-only hotspot 参考 判断热点是否打开 网上方法比较多,我这边使用了通过WifiManager 拿反射的getWi…...
Redis 执行 RDB 快照期间,主进程可以正常处理命令吗?
执行了 save 命令,会在主进程生成 RDB 文件,由于和执行操作命令在同一个线程,所以如果写入 RDB 文件的时间太长,会阻塞主进程。 执行 bgsave 过程中,由于是交给子进程来构建 RDB 文件,主进程还是可以继续工…...
Python加入Excel--生产力大提高|微软的全方面办公
Python作为一种功能强大的编程语言,已经逐渐成为了数据分析、机器学习、Web开发等领域的主流语言之一。而将Python集成到Excel中,则可以为Excel用户提供更加强大的数据处理和分析能力,同时也可以为Python开发者提供更加便捷的数据处理和可视化…...
Excel 分组排名
分组排名 公式:SUMPRODUCT((A:AA2)*(C:C>C2)) 1 降序:> 改为 < ⚠️注意1:此处空值参与排名;不参与排名则公式改为:IF(C2“”,“”,SUMPRODUCT((A:AA2)*(C:C>C2)) 1) ⚠️注意2:相同值的项…...
Redis初始以及安装
"梦却了无影踪,梦仍不曾改动" 初始Redis (1) Redis是什么? 要认识、学习一个软件,最重要的途径无一是去该软件的官方文档里瞅瞅、转悠转悠。 从官方文档的介绍中得知,Redis是一种工作于内存,…...
【算法训练营Day07】字符串part1
文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接:344. 反转字符串 双指针法,两个指针的元素直接调转即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …...
如何将联系人从 iPhone 转移到 Android
从 iPhone 换到 Android 手机时,你可能需要保留重要的数据,例如通讯录。好在,将通讯录从 iPhone 转移到 Android 手机非常简单,你可以从本文中学习 6 种可靠的方法,确保随时保持连接,不错过任何信息。 第 1…...
Ascend NPU上适配Step-Audio模型
1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统,支持多语言对话(如 中文,英文,日语),语音情感(如 开心,悲伤)&#x…...
数据库分批入库
今天在工作中,遇到一个问题,就是分批查询的时候,由于批次过大导致出现了一些问题,一下是问题描述和解决方案: 示例: // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...
有限自动机到正规文法转换器v1.0
1 项目简介 这是一个功能强大的有限自动机(Finite Automaton, FA)到正规文法(Regular Grammar)转换器,它配备了一个直观且完整的图形用户界面,使用户能够轻松地进行操作和观察。该程序基于编译原理中的经典…...
基于Springboot+Vue的办公管理系统
角色: 管理员、员工 技术: 后端: SpringBoot, Vue2, MySQL, Mybatis-Plus 前端: Vue2, Element-UI, Axios, Echarts, Vue-Router 核心功能: 该办公管理系统是一个综合性的企业内部管理平台,旨在提升企业运营效率和员工管理水…...
NPOI Excel用OLE对象的形式插入文件附件以及插入图片
static void Main(string[] args) {XlsWithObjData();Console.WriteLine("输出完成"); }static void XlsWithObjData() {// 创建工作簿和单元格,只有HSSFWorkbook,XSSFWorkbook不可以HSSFWorkbook workbook new HSSFWorkbook();HSSFSheet sheet (HSSFSheet)workboo…...
在 Spring Boot 项目里,MYSQL中json类型字段使用
前言: 因为程序特殊需求导致,需要mysql数据库存储json类型数据,因此记录一下使用流程 1.java实体中新增字段 private List<User> users 2.增加mybatis-plus注解 TableField(typeHandler FastjsonTypeHandler.class) private Lis…...
MySQL的pymysql操作
本章是MySQL的最后一章,MySQL到此完结,下一站Hadoop!!! 这章很简单,完整代码在最后,详细讲解之前python课程里面也有,感兴趣的可以往前找一下 一、查询操作 我们需要打开pycharm …...
热烈祝贺埃文科技正式加入可信数据空间发展联盟
2025年4月29日,在福州举办的第八届数字中国建设峰会“可信数据空间分论坛”上,可信数据空间发展联盟正式宣告成立。国家数据局党组书记、局长刘烈宏出席并致辞,强调该联盟是推进全国一体化数据市场建设的关键抓手。 郑州埃文科技有限公司&am…...
