当前位置: 首页 > news >正文

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 分组排名

分组排名 公式&#xff1a;SUMPRODUCT((A:AA2)*(C:C>C2)) 1 降序&#xff1a;> 改为 < ⚠️注意1&#xff1a;此处空值参与排名&#xff1b;不参与排名则公式改为&#xff1a;IF(C2“”,“”,SUMPRODUCT((A:AA2)*(C:C>C2)) 1) ⚠️注意2&#xff1a;相同值的项…...

Redis初始以及安装

"梦却了无影踪&#xff0c;梦仍不曾改动" 初始Redis (1) Redis是什么&#xff1f; 要认识、学习一个软件&#xff0c;最重要的途径无一是去该软件的官方文档里瞅瞅、转悠转悠。 从官方文档的介绍中得知&#xff0c;Redis是一种工作于内存&#xff0c;…...

对WWDC 2025 Keynote 内容的预测

借助我们以往对苹果公司发展路径的深入研究经验&#xff0c;以及大语言模型的分析能力&#xff0c;我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际&#xff0c;我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测&#xff0c;聊作存档。等到明…...

精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南

精益数据分析&#xff08;97/126&#xff09;&#xff1a;邮件营销与用户参与度的关键指标优化指南 在数字化营销时代&#xff0c;邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天&#xff0c;我们将深入解析邮件打开率、网站可用性、页面参与时…...

重启Eureka集群中的节点,对已经注册的服务有什么影响

先看答案&#xff0c;如果正确地操作&#xff0c;重启Eureka集群中的节点&#xff0c;对已经注册的服务影响非常小&#xff0c;甚至可以做到无感知。 但如果操作不当&#xff0c;可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...

VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP

编辑-虚拟网络编辑器-更改设置 选择桥接模式&#xff0c;然后找到相应的网卡&#xff08;可以查看自己本机的网络连接&#xff09; windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置&#xff0c;选择刚才配置的桥接模式 静态ip设置&#xff1a; 我用的ubuntu24桌…...

tomcat入门

1 tomcat 是什么 apache开发的web服务器可以为java web程序提供运行环境tomcat是一款高效&#xff0c;稳定&#xff0c;易于使用的web服务器tomcathttp服务器Servlet服务器 2 tomcat 目录介绍 -bin #存放tomcat的脚本 -conf #存放tomcat的配置文件 ---catalina.policy #to…...

【前端异常】JavaScript错误处理:分析 Uncaught (in promise) error

在前端开发中&#xff0c;JavaScript 异常是不可避免的。随着现代前端应用越来越多地使用异步操作&#xff08;如 Promise、async/await 等&#xff09;&#xff0c;开发者常常会遇到 Uncaught (in promise) error 错误。这个错误是由于未正确处理 Promise 的拒绝&#xff08;r…...

水泥厂自动化升级利器:Devicenet转Modbus rtu协议转换网关

在水泥厂的生产流程中&#xff0c;工业自动化网关起着至关重要的作用&#xff0c;尤其是JH-DVN-RTU疆鸿智能Devicenet转Modbus rtu协议转换网关&#xff0c;为水泥厂实现高效生产与精准控制提供了有力支持。 水泥厂设备众多&#xff0c;其中不少设备采用Devicenet协议。Devicen…...

字符串哈希+KMP

P10468 兔子与兔子 #include<bits/stdc.h> using namespace std; typedef unsigned long long ull; const int N 1000010; ull a[N], pw[N]; int n; ull gethash(int l, int r){return a[r] - a[l - 1] * pw[r - l 1]; } signed main(){ios::sync_with_stdio(false), …...

【笔记】AI Agent 项目 SUNA 部署 之 Docker 构建记录

#工作记录 构建过程记录 Microsoft Windows [Version 10.0.27871.1000] (c) Microsoft Corporation. All rights reserved.(suna-py3.12) F:\PythonProjects\suna>python setup.py --admin███████╗██╗ ██╗███╗ ██╗ █████╗ ██╔════╝…...

基于谷歌ADK的 智能产品推荐系统(2): 模块功能详解

在我的上一篇博客&#xff1a;基于谷歌ADK的 智能产品推荐系统(1): 功能简介-CSDN博客 中我们介绍了个性化购物 Agent 项目&#xff0c;该项目展示了一个强大的框架&#xff0c;旨在模拟和实现在线购物环境中的智能导购。它不仅仅是一个简单的聊天机器人&#xff0c;更是一个集…...