• mysql存储过程 使用游标实现两张表数据同步数据


    一  存储过程中的游标

    1.1 游标的功能概述

    游标就是类似java中集合遍历的迭代器,MySQL中的游标只能用在存储过程和函数中,在存储过程和函数中可以使用游标对结果集进行循环的处理,可以遍历返回的多行结果,每次拿到一整行数据。

    1.2 游标的语法使用

    1.创建游标

    DECLARE 游标名称 CURSOR FOR 查询sql语句;  如 

    declare stu_data_List cursor for select * from tb_stu where create_time>='2022-07-27 10:00:00';

    2.打开游标

    OPEN 游标名称;  如      open stu_data_List;

    3.遍历使用游标获取数据

    FETCH 游标名称 INTO 变量名1,变量名2,...;  如     fetch stu_data_List into id,u_name,u_age,create_date; 

    4.关闭游标

    CLOSE 游标名称; 如 	close stu_data_List;

     二  实操案例

    2.1 定义一张表以及铺底一些数据

    CREATE TABLE `tb_stu` (
      `id` int(10) NOT NULL COMMENT '用户id',
      `u_name` varchar(255) DEFAULT NULL COMMENT '用户名',
      `u_age` int(10) DEFAULT NULL COMMENT '年龄',
      `create_time` datetime DEFAULT NULL COMMENT '创建时间',
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

    新增一些数据

     3.编写存储过程:实现从tb_stu查询指定日期范围的数据迁移到tb_stu2 这张表中

    1. drop PROCEDURE IF EXISTS p_sync_stu;
    2. CREATE PROCEDURE p_sync_stu()
    3. begin
    4. -- 需要定义接收游标数据的变量
    5. declare id int(10);
    6. declare u_name varchar(255);
    7. declare u_age int(10);
    8. declare create_date TIMESTAMP;
    9. declare flag int default 0; -- 定义标记变量
    10. -- 创建游标,查询学生信息数据
    11. declare stu_data_List cursor for select * from tb_stu where create_time>='2022-07-27 10:00:00';
    12. -- 游标结束后,将标记量改为1
    13. declare exit handler for not found set flag=1;
    14. -- 开启游标
    15. open stu_data_List;
    16. -- 循环遍历游标
    17. repeat
    18. -- 使用游标,遍历结果数据
    19. fetch stu_data_List into id,u_name,u_age,create_date;
    20. -- 将数据保存到表中
    21. insert into tb_stu2 values(id,u_name,u_age,create_date);
    22. until flag=1
    23. end repeat;
    24. -- 关闭游标
    25. close stu_data_List;
    26. end

    执行

        call  p_sync_stu();

    效果:

    复习mysql的存储过程,看这个就够了 - 知乎

  • 相关阅读:
    FineBI产品简介
    python自动化测试(二):xpath获取元素
    C++中菱形继承中的多态在底层是如何实现的。
    从金蝶云星空到聚水潭通过接口配置打通数据
    平台工程的兴起
    22年7月工作笔记整理(前端)
    【月报】Aavegotchi 开发进度更新 - 2023 年 8 月
    玩转 gpgpu sim 01记 —— try it
    数据库事务——快照读与当前读
    linux系统---LNMP架构下部署社区论坛与博客
  • 原文地址:https://blog.csdn.net/u011066470/article/details/126020576