mysql中关于存储过程无法实现迁移复制表中数据问题

一 问题描述

1.1 问题描述

编写了一个存储过程,逻辑是查询某一张表中部分字段的数据,然后插入到另外一张新表中。但是发现在操作过程,插入都是null。

1.存储过程

#select * from tb_stu


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 u_name 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 u_name;
		-- 将数据保存到表中
		insert into tb_stu3  values(u_name);
	until flag=1
  end repeat;	
	-- 关闭游标
	close stu_data_List;
end
	
	call  p_sync_stu();

2.截图 

 3.执行存储过程后,插入表中数据

1.2 解决办法

经过千山万水的排查,终于发现定义游标的时候: declare stu_data_List cursor for select  xx  的字段名和要声明的字段名称,不能一致,不能重名。

 修改后的存储过程,再次执行,查看表中数据,如下图所示: 可以看到已经有了数据!

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值