MYSQL创建存储过程,遍历查询表数据,将满足条件的数据插入另一张表中

MySql存储过程动态创建表并插入数据 MySql存储过程动态创建表并插入数据          最近做的一个项目,数据库用的是MySql,对于MySql不是很熟练,只是会简单的应用,毕竟简单的sql语句还是相通的,但是随着项目的深入复杂的sql语句开始慢慢多起来,其中一个小难点就是要根据当天的日期动态创建表,并且向其中插入数据。          具体逻辑可以理解为,先去数据库查询有没有当天的记录表,如果没有则创建表,然后执行当天 阅读详情

存储过程实现要求:

1、遍历 t_qlrinfo表数据 ,获取bsm,qxdm,fwqbm,ywh,qlbsm;

2、将数据与t_tb_dyxx关联,若存在满足条件的数据,则将 t_qlrinfo表的bsm插入T_TMP_QLRXX_BSM表中。

----------------------------------------------------------------------------------------------

存储过程编写如下:

DELIMITER //      # 定义//为一句sql的结束标志,取消;的所代表的意义
drop procedure if exists proc_insert;
create procedure proc_insert()
begin
    DECLARE v_qxdm INT;                # 声明变量
    DECLARE v_ywh VARCHAR(64);       
    DECLARE v_fwqbm int ;
    DECLARE v_djbsm BIGINT ;
    DECLARE v_bsm BIGINT ;
    DECLARE rows int ;
    declare done BOOLEAN default 0;
    # 下面定义一个游标来记录sql查询的结果
    declare s_list cursor for select  bsm,qxdm,fwqbm,ywh,qlbsm from BDCZZ.t_qlrinfo;
    # 为下面循环建立一个退出标志,当游标遍历完后将done的值设置为1
    declare continue handler for not found set done=1;
    open s_list;    # 打开游标 
        read_loop:LOOP
    fetch s_list into v_bsm, v_qxdm,v_fwqbm, v_ywh,v_djbsm  ;   # 将游标中的值赋给定义好的变量
        select count(1) into rows from bdczztb.t_tb_dyxx b where v_qxdm=b.qxdm_num and v_fwqbm=b.fwqbm and v_ywh=b.ywh and v_djbsm=b.djbsm_num  ;            
        IF done THEN    # 当为1时退出,为0时继续
            LEAVE read_loop;
        END IF;
        IF rows>0 then
                    INSERT INTO BDCZZTB.T_TMP_QLRXX_BSM(BSM_DELETE) values(v_bsm); 
                    commit;
       END IF;
     END LOOP;
close s_list;         # 关闭游标
end//
DELIMITER;

---------------------------------------------------

-- 调用存储过程
call proc_insert();

-----------------------------------------------------------------------------------------------------------

如果我还要记录 查询到第几行插入的数据,和插入时间,则新加上 XH  和时间:

DELIMITER //
drop procedure if exists proc_insert;
create procedure proc_insert()
begin
    DECLARE v_qxdm INT;
    DECLARE v_ywh VARCHAR(64);
    DECLARE v_fwqbm int ;
    DECLARE v_djbsm BIGINT ;
    DECLARE v_bsm BIGINT ;
    DECLARE rows int ;
    declare xh int default 0;
    declare done BOOLEAN default 0;
    declare s_list cursor for select  bsm,qxdm,fwqbm,ywh,qlbsm from BDCZZ.t_qlrinfo;
    declare continue handler for not found set done=1;
    open s_list;   
        read_loop:LOOP
    fetch s_list into v_bsm, v_qxdm,v_fwqbm, v_ywh,v_djbsm  ;
        set xh := xh+1 ;
        select count(1) into rows from bdczztb.t_tb_dyxx b where v_qxdm=b.qxdm_num and v_fwqbm=b.fwqbm and v_ywh=b.ywh and v_djbsm=b.djbsm_num  ;            
        IF done THEN
            LEAVE read_loop;
        END IF;
        IF rows>0 then
                    INSERT INTO BDCZZTB.T_TMP_QLRXX_BSM(BSM_DELETE,xh,gxsj) values(v_bsm, xh ,sysdate()); 
                    commit;
       END IF;
     END LOOP;
close s_list;
end//
DELIMITER;

-- 调用
call proc_insert();

Mysql跨表更新 多表update sql语句总结 Mysql跨表更新一直是大家所关心的话题,本文介绍mysql多表 update在实践中几种不同的写法,需要的朋友可以参考下 立即下载

相关推荐

新手必看:TwinCAT死活扫不到倍福CX5020?别慌,先检查这3个地方(附静态IP配置)

本文详细介绍了TwinCAT软件无法扫描到倍福CX5020控制器的常见问题及解决方案。从网络连通性检查、系统环境配置到静态IP设置,提供了一套完整的排查流程和优化建议,帮助新手快速解决通信问题,确保设备稳定运行。

weixin_27219587的博客 368

利用存储过程,实现查询

my

Mar.三月 2678

PyCharm 2023最新版安装配置全攻略(附永久激活教程)

本文详细介绍了PyCharm 2023最新版的安装配置全流程,包括版本选择、初始配置、插件生态、工程模板、调试优化及团队协作等关键步骤。特别针对专业版和社区版的功能差异进行对比,帮助开发者高效搭建Python开发环境,提升编码效率与团队协作能力。

p4q5r6s7t的博客 876

mysql使用存储过程将一个表中的数据导入另一个表

存储过程 本人也是第一次使用存储过程,中间遇到了很多坑,在此记录一下,希望能帮助使用的人少踩点坑。。 先说一下我使用存储过程的需要,其实需求很简单就是把一个表中的数据导入一个新的表中,并且删除原有表中的数据,说白了就是一个数据的备份 我是使用navicat进行编辑的,我认为用好用的工具就要使用,能省事就省事,毕竟人生时间不多,不要浪费时间在那些无用的事情上。 CREATE DEFINER=...

散步的博客 1万+

一口气看完TransformerXL详细解释带代码一:相对位置编码

相对位置编码(Relative Position Encoding)是Transformer模型中用于捕捉序列元素间相对位置关系的一种方法,与绝对位置编码(如BERT中的固定位置嵌入)不同,它直接建模元素之间的相对距离,从而更灵活地处理长序列或不同长度的序列。1. 为什么需要相对位置编码?​。

m0_73426548的博客 1427

5个企业级SOC平台横向对比:IBM QRadar vs Splunk vs 奇安信NGSOC

本文深度对比了IBM QRadar、Splunk和奇安信NGSOC等五大企业级SOC平台的核心能力,从架构设计、威胁检测、运营效率、成本模型和行业适配度五个维度进行解析。文章特别强调安全运营中心(SOC)在现代企业中的关键作用,并提供了实战数据和优化建议,帮助企业选择最适合自身需求的SOC解决方案。

a1b2c的博客 664

存储过程循环插入表中

查出角色表T_SYS_ROLE,循环然后插入角色资源表T_SYS_ROLE_RESOURCE declare --游标,从角色表T_SYS_ROLE取出所有数据 cursor ROLE_ID_cursor is SELECT ROLE_ID from T_SYS_ROLE; new_ROLE_ID ROLE_ID_cursor%rowtype; BEGIN --DBMS_OUTPUT.ENABLE(buffer_size => null); --表示输出buf

奋斗不息 422

云卓遥控器+DIY高清摄像机的方案(完美接入原系统)

发云卓H16 1080P数图控三合一10公里 其中它月

fgh00000的博客 1万+

mysql 查询记录并插入另一张表

从 bd_house 查询 houseId, houseName, 插入 bd_house_customer DROP PROCEDURE IF EXISTS insert_extra_column_test; DELIMITER // CREATE PROCEDURE insert_extra_column_test() BEGIN -- 声明变量 DECLARE newId LONG; DECLARE houseId LONG; DECLARE houseName VARCHAR...

lihaiyong92的博客 2034

R语言实战:非正态数据下的Scheirer–Ray–Hare检验全流程解析

本文详细解析了在R语言中执行Scheirer–Ray–Hare检验的全流程。当数据不满足正态分布假设时,该非参数检验是传统双因素方差分析的有效替代方案。文章从原理、R环境配置、数据准备、代码实现、结果解读到事后比较与可视化,提供了完整的实战指南,帮助研究者稳健地分析多因素实验设计中的主效应和交互效应。

cc789的博客 406

FPGA实现Gardner环定时同步:Verilog代码与Testbench实战解析

本文深入解析了在FPGA上实现Gardner环定时同步的完整过程,详细阐述了其非数据辅助的定时误差检测原理。通过Verilog代码实战,展示了内插滤波器、定时误差检测器、环路滤波器和数控振荡器等核心模块的设计,并提供了完整的Testbench验证方法,帮助开发者解决数字通信系统中的时钟同步难题。

gpt4scribbler的博客 581

mysql 查询表字段作为其中参数插入到另一表的存储过程

表 m_sp 中一个字段sp_id,关联另一个m_sp_k 表,B表是后期加的,导致m_sp_k 表中没有关联A表的历史数据,如下存储过程便是解决所述问题。 查询结果循环遍历,结果值作为新的参数插入新表中。 BEGIN declare done int default 0; declare relationId VARCHAR(32);  declare idCur cu

RogueStudys的博客 3244

[ComfyUI进阶教程] animatediff视频提示词书写要点

4.提示词不要太复杂:comfyui的提示字符数不能太多,在animate提示词中,不要放太多的画质修饰词。5.成熟稳定的模型:使用主流的大模型,如麦橘系列(参考L站,C站等排行榜),大模型的效果比较稳定。3.手部隐藏:AI绘画对手的姿势不太友好,可以在生成的构图中隐藏手(比如增加提示词:手在背后)第一段是人物主体描述词,比如是一个女孩,穿什么衣服,在什么场景下,镜头是全身还是半身,或者特写。1个女孩,单人,黑色头发,白色连衣裙,全身,户外,中等身材,新款中式西装,帧数不能太短,不然画面会很跳。

细节控-AI先行者的博客 2741

mysql按行循环_如何循环遍历表的所有行? (MySQL)

因为循环的建议意味着对过程类型解决方案的请求。这是我的。对从表取得的任何单个记录起作用的任何查询都可以包装在过程中,以使其通过表的每一行运行,如下所示:DROP PROCEDURE IF EXISTS ROWPERROW;DELIMITER ;;然后这里的过程如你的示例(table_A和table_B用于清晰)CREATE PROCEDURE ROWPERROW()BEGINDECLARE n I...

weixin_29374181的博客 2710

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

mysql遍历表字段_如何遍历表的所有行?(MySQL)

小编典典由于建议使用循环意味着需要过程类型的解决方案。这是我的。任何对从表中获取的任何记录进行处理的查询都可以包装在一个过程中,以使其遍历表的每一行,如下所示:DROP PROCEDURE IF EXISTS ROWPERROW;DELIMITER ;;然后是您示例中的过程(为清楚起见,使用了table_A和table_B)CREATE PROCEDURE ROWPERROW()BEGINDECL...

weixin_42318815的博客 2559

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

mysql遍历表查询_如何遍历表的所有行?(MySQL)?mysql-问答-阿里云开发者社区-阿里云...

由于建议使用循环意味着需要过程类型的解决方案。这是我的。任何对从表中获取的任何记录进行处理的查询都可以包装在一个过程中,以使其遍历表的每一行,如下所示:DROP PROCEDURE IF EXISTS ROWPERROW; DELIMITER ;; 然后是您示例中的过程(为清楚起见,使用了table_A和table_B)CREATE PROCEDURE ROWPERROW() BEGIN DECL...

weixin_42306699的博客 274

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

MySQL存储过程实现数据库表中的null值检测并输出表格结果

需求目标: 通过编写存储过程,检查数据库表中每一条数据的每个字段的空值(null值)情况,并将存在null值的这条数据找出来以.csv文件的格式输出 设计思路: 编写函数,输入变量为表名,遍历该表的每一个字段,找出存在null值的所有id,然后依据id查询出所有的数据导出到csv文件 1,遍历表table中的所有字段 2,针对第一个字段,查询出所有该字段为null的那条记录的id值,放在临时表temp中 3,将临时表temp中的值放在临时表temp1中 4,依次遍历后边的字段,并查询出该字段为

sinat_36005594的博客 1690

mysql通过字段值查询表名

mysql通过存储过存调用,获取字段值所在的数据表和数据字段

weixin_51909555的博客 2750

pycharm连接MySql数据库,新建表creat table、删除表drop table、查询表select、插入数据insert

pycharm连接MySql数据库,新建表creat table、删除表drop table、查询表select、插入数据insert

YuanLiYin079的博客 2778

MySQL获取数据库内所有表格数据总数

在 MySQL 中,要获取数据库内所有表格的数据总数,可以编写一个查询脚本来遍历每个表并计算其行数。你可以使用数据库,它包含了关于数据库元数据的表格,如TABLES和COLUMNS。

蜡笔小新星的博客 6178

mysql存储过程echo_关于Mysql使用存储过程,并且使用游标的Demo

DELIMITER$$/*Mysql创建存储过程名为:new_pro*/CREATEDEFINER=`root`@`localhost`PROCEDURE`new_pro`()BEGIN/*声明变量并设定默认值*/Declarenot_foundintdefault0;DeclarecollectionIdbigint;Declarechildren_coll...

weixin_36039434的博客 120

qt遍历mysql表数据结构_非常齐全的QT数据库操作详解

#includeQT += sqlQSqlDatabase类实现了数据库连接的操作QSqlQuery类用来执行SQL语句QSqlRecord类 封装数据库所有记录第一:QSqlDatabase类QSqlDatabase db =QSqlDatabase::addDatabase("QSQLITE");采用QSQLITE数据库,QMYSQL数据库有问题?db.setHostName("localh...

weixin_35799467的博客 1780

mysql 利用动态sql 游标 ,动态去除数据中空格 -----------------存储过程

哎 ! 有先数据是手动插入的,爬虫爬取来的数据中亦可能存在异常数据 这个文章,利用存储过程,用来遍历表字段, 然后利用trim函数去除数据中的空格 目录 知识储备: 1. mysql 查询表字段信息 2 .存储过程----》循环 3 . 存储过程----》游标 4. 去空格方法 5.综合一下需要替换的是表名库名字 知识储备: 1. mysql 查询表字段信息 SELEC...

zero 792

pymysql数据库之建库建表、增删改查

上次有同学问到,python的持久化怎么处理。这次就带大家来体验一下,python怎么去访问数据库。 首先要有个数据库 现在的数据库分类很多,以mysql为例。需要到mysql的官网上去下载mysql。 下载路径 下载打开安装包,勾选常见的安装位置等配置以后,设置数据库用户名密码,启动mysql就可以了。 mac上的启动可以沿着一下路径开启: 系统偏好设置------Mysql------开启。如...

linshijun33的专栏 1万+

mysql数据库创建

MySQL数据库的基本操作 客户端操作:mysql -uroot -p 注意事项: sql语句中,每条语句都应该以;结尾 sql语句中,并不区分大小写 sql语句中,数据库名称,表名称,字段名称不能直接使用sql关键字—” 库的操作: 创建数据库:create database if not exists dbname; 查看数据库:show databases; 选择所操作的数据库:use dbname; select database(); 删除数据库:drop database dbname; 表的

qq_43609421的博客 232

mysql创建数据库的语法_mysql创建数据库语法

MySQL语法语句大全一、SQL速成 结构查询语言(SQL)是用于查询关系数据库的标准语言,它包括若干关键字和一致的语法,便于数据库元件(如表、索引、 字段等)的建立和......备份和恢复 备份数据库 staffer c:\\mysql\\bin\\mysqldump -uroot -proot staffer>e:\\ 得到的是一个 sql 脚本,不包括建库的语句,所以你需要手工 创建数...

weixin_30310149的博客 1876
上一篇: mysql执行脚本提示锁表:java.sql.SQLException: Lock wait timeout exceeded; try restarting transaction
下一篇: VS2010 新建C#项目中没有app.config文件,手动添加方法
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值