mysql存储过程 REPEAT 嵌套循环

关于 mysql 存储过程内循环如何嵌套循环,也是在博主历经一番研究后,终于搞出来了,废话不多说,上干货。

博主是用的REPEAT +while实现的嵌套循环,说实话,mysql存储过程这个功能有待完善,太多坑了。

废话不多说,看代码:

CREATE DEFINER=`root`@`%` PROCEDURE `A`(dateTime varchar(100))
BEGIN--  参数 dateTime (格式 yyyy-MM)-- 外层循环结束标识
DECLARE done BOOLEAN DEFAULT FALSE;
-- 内层循环结束标识
DECLARE edone BOOLEAN DEFAULT FALSE;DECLARE v_deptId varchar(64);
DECLARE v_centerCode varchar(64);
DECLARE v_centerName varchar(64);DECLARE v_dictLabel varchar(64);
DECLARE v_dictValue varchar(64);--  内循环次数
DECLARE in_Num BIGINT(12);-- 内循环游标
DECLARE insideInfo CURSOR FOR
select dict_label,dict_value 
from 表A   a where  dict_type='other_item' and status='0';-- 外循环游标
DECLARE dayInfo CURSOR FOR
select sd.dept_id,sd.center_code,bc.center_name 
from 表B
where  sd.center_code=bc.center_code and  sd.status='0' and sd.del_flag='0'  and sd.dept_level='3';-- 外循环结束标识
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done=TRUE;-- 开启事务
START TRANSACTION;delete  from 表C;--  开启外循环标识:循环站点OPEN dayInfo;REPEATFETCH dayInfo INTO v_deptId,v_centerCode,v_centerName;IF !done THEN--   业务sqlINSERT INTO 表C(one_type,two_type,dept_id,center_code,center_name, pro_name,month,year, create_by, create_time,pro_income, people_num)(select  "1","q", v_deptId,v_centerCode,v_centerName,'基础业务',	dateTime,left(dateTime,4),'admin',SYSDATE(),ts.pro_income,ts.people_num from (select ifnull(sum(round(work_money,2)),0) as pro_income,ifnull(count(DISTINCT bc_id),0) as people_numfrom 表Dwhere 字段A=v_deptId and 字段B= v_centerCodeand  DATE_FORMAT(字段C,'%Y-%m')=dateTime ) ts );-- 开启内循环:对外循环的每个对象进行内循环OPEN insideInfo;FETCH insideInfo INTO v_dictLabel,v_dictValue;
SET @j=1;WHILE @j<=in_Num DOINSERT INTO 表C (one_type,two_type,dept_id,center_code,center_name, pro_name,month,year, create_by, create_time,people_num, pro_income)(select "3",v_dictValue,v_deptId,v_centerCode,v_centerName,v_dictLabel,dateTime,left(dateTime,4),'admin',SYSDATE(),0,ts.pro_incomefrom (select ifnull(sum(round(bo.income_money,2)),0) as pro_incomefrom 表E where  bo.dept_id=v_deptId and bo.center_code= v_centerCode  and bo.item=v_dictValue and  DATE_FORMAT(check_time,'%Y-%m')=dateTime  ) ts );SET @j=@j+1;END while;		 --  结束循环CLOSE insideInfo;END IF;--  结束循环UNTIL done END REPEAT;CLOSE dayInfo;COMMIT;END

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/130755.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

动手学深度学习:2.线性回归pytorch实现

动手学深度学习&#xff1a;2.线性回归pytorch实现 1.手动构造数据集2.小批量读取数据集3.定义模型和损失函数4.初始化模型参数5.小批量随机梯度下降优化算法6.训练完整代码Q&A 1.手动构造数据集 import torch from torch.utils import data from d2l import torch as d2l…

基于生成对抗网络的照片上色动态算法设计与实现 - 深度学习 opencv python 计算机竞赛

文章目录 1 前言1 课题背景2 GAN(生成对抗网络)2.1 简介2.2 基本原理 3 DeOldify 框架4 First Order Motion Model5 最后 1 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 基于生成对抗网络的照片上色动态算法设计与实现 该项目较为新颖&am…

【rust/esp32】初识slint ui框架并在st7789 lcd上显示

文章目录 说在前面关于slint关于no-std关于dma准备工作相关依赖代码结果参考 说在前面 esp32版本&#xff1a;s3运行环境&#xff1a;no-std开发环境&#xff1a;wsl2LCD模块&#xff1a;ST7789V2 240*280 LCDSlint版本&#xff1a;master分支github地址&#xff1a;这里 关于s…

【音视频 | opus】opus编码的Ogg封装文件详解

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; &#x1f923;本文内容&#x1f923;&a…

汇编语言(举个栗子)

汇编语言&#xff08;Assembly Language&#xff09;是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言&#xff0c;亦称为符号语言。在汇编语言中&#xff0c;用助记符代替机器指令的操作码&#xff0c;用地址符号或标号代替指令或操作数的地址。在不同…

总结几个面试题

目录 1. this 指针存在哪里 2. this指针可以为空吗&#xff1f; 3. 结构体怎么对齐&#xff1f;为什么要进行内存对齐&#xff1f; 4. 如何让结构体按照指定的对齐方式对齐&#xff1f;能否按照3、4、5即任意字节对齐&#xff1f; 5. 什么是大小端&#xff1f;如何测…

Go语言的Http包及冒泡排序解读

目录标题 Http一.Get二、Post三、Http服务器 BubbleSort冒泡排序 Http 一.Get package mainimport ("fmt""io/ioutil""net/http")func main() {response, err : http.Get("http://www.baidu.com")if err ! nil {fmt.Println("Ht…

基于51单片机土壤湿度检测及自动浇花系统仿真(带时间显示)

wx供重浩&#xff1a;创享日记 对话框发送&#xff1a;单片机浇花 获取完整源码源文件仿真源文件原理图源文件论文报告等 单片机土壤湿度检测及自动浇花系统仿真&#xff08;带时间显示&#xff09; 具体功能&#xff1a; &#xff08;1&#xff09;液晶第一行显示实际湿度&am…

时间存储以及网络传输问题

在实际开发中&#xff0c;很多时候会有时间解析转换问题&#xff0c;这个问题比较麻烦。因为时间格式都不一样&#xff0c;有没有一种办法可以跨平台和跨语言&#xff1f;考虑到了 unix 时间戳&#xff0c;这个可以很好解决那些问题。 wiki 百科解释 https://zh.wikipedia.org…

信道编码译码及MATLAB仿真

文章目录 前言一、什么是信道编码&#xff1f;二、信道编码的基本逻辑—冗余数据1、奇偶检验码2、重复码 三、编码率四、4G 和 5G 的信道编码1、卷积码2、维特比译码&#xff08;Viterbi&#xff09;—— 概率译码3、LTE 的咬尾卷积码4、LTE 的 turbo 码 五、MATLAB 仿真1、plo…

0008Java安卓程序设计-ssm基于Android平台的健康管理系统

文章目录 **摘要**目录系统实现开发环境 编程技术交流、源码分享、模板分享、网课教程 &#x1f427;裙&#xff1a;776871563 摘要 首先,论文一开始便是清楚的论述了系统的研究内容。其次,剖析系统需求分析,弄明白“做什么”,分析包括业务分析和业务流程的分析以及用例分析,…

Git 的基本操作 ——命令行

Git 的工作流程 详解如下&#xff1a; 本地仓库&#xff1a;是在开发人员自己电脑上的Git仓库,存放我们的代码(.git 隐藏文件夹就是我们的本地仓库) 远程仓库&#xff1a;是在远程服务器上的Git仓库,存放代码(可以是github.com或者gitee.com 上的仓库,或者自己该公司的服务器…

【ElasticSearch系列-05】SpringBoot整合elasticSearch

ElasticSearch系列整体栏目 内容链接地址【一】ElasticSearch下载和安装https://zhenghuisheng.blog.csdn.net/article/details/129260827【二】ElasticSearch概念和基本操作https://blog.csdn.net/zhenghuishengq/article/details/134121631【三】ElasticSearch的高级查询Quer…

leetcode 167. 两数之和 II - 输入有序数组

leetcode 167. 两数之和 II - 输入有序数组 答案一&#xff1a;用例全部通过&#xff0c;但是超时。朴实的两层循环 class Solution { public:vector<int> twoSum(vector<int>& numbers, int target) {vector<int> result;for (int i 0; i < numbe…

【数据结构】模拟实现queue

这里利用list这个容器来模拟queue&#xff1b;实际上在STL底层中&#xff0c;queue和stack都是用deque这个容器 实现。 namespace my_queue {//适配器模式/配接器template <class T, class Container list<T>>class queue{public:void push(const T& val){_…

PTA:前序序列创建二叉树

前序序列创建二叉树 题目输入格式输出格式输入样例&#xff08;及其对应的二叉树&#xff09;输出样例 代码 题目 编一个程序&#xff0c;读入用户输入的一串先序遍历字符串&#xff0c;根据此字符串建立一个二叉树&#xff08;以二叉链表存储&#xff09;。 例如如下的先序遍…

git快速入门!!! git的常用命令!!!

git快速入门 git的常用命令1. 初始化一个新的 Git 仓库2. 添加文件到暂存区3. 提交更改4. 查看当前分支的状态5. 创建并切换到新的分支6. 切换回之前的分支7. 合并分支8. 拉取远程仓库的更新9. 推送本地仓库的更新 git remote -v是什么git fetchclone命令详解push指定的分支git…

SpringCloudAlibaba - 项目完整搭建(Nacos + OpenFeign + Getway + Sentinel)

目录 一、SpringCloudAlibaba 项目完整搭建 1.1、初始化项目 1.1.1、创建工程 1.1.2、配置父工程的 pom.xml 1.1.3、创建子模块 1.2、user 微服务 1.2.1、配置 pom.xml 1.2.2、创建 application.yml 配置文件 1.2.3、创建启动类 1.2.4、测试 1.3、product 微服务 1…

如何使用CodeceptJS、Playwright和GitHub Actions构建端到端测试流水线

介绍 端到端测试是软件开发的一个重要方面&#xff0c;因为它确保系统的所有组件都能正确运行。CodeceptJS是一个高效且强大的端到端自动化框架&#xff0c;与Playwright 结合使用时&#xff0c;它成为自动化Web、移动甚至桌面 (Electron.js) 应用程序比较好用的工具。 在本文中…