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 这张表中

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

执行

    call  p_sync_stu();

效果:

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

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值