使用游标将数据更新,陷入死循环,求解释

coFinder coFinder 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
数据迁移
要将老的数据库里面的数据导入到新的数据库。
数据表不一样,只是有些字段一样。
我要
将这个库里面的user 表的数据导入到
NEW_DB的`USER_ACCOUNT表,下面这样居然陷入了循环,运行了十几分钟
DELIMITER $$

CREATE DEFINER=`root`@`localhost` PROCEDURE `pr_test3`()
BEGIN
DECLARE p_username VARCHAR(20);
DECLARE p_email VARCHAR(20) ;
DECLARE Done INT;
#得到游标,选择老的表里面的username和email
DECLARE rs CURSOR FOR SELECT username,email FROM user LIMIT 100;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET Done = 1;

OPEN rs;
FETCH NEXT FROM rs INTO p_username,p_email;
#开始遍历
REPEAT
IF NOT Done THEN
#执行需要的操作
SELECT @p_username;
#插入到新的库的表
INSERT INTO NEW_DB.`USER_ACCOUNT` (USERID,`PASSWORD`,`EMAIL`,`REGTIME`,`MODTIME`) VALUES (p_username,,'123456',p_email,NOW(),NOW());
#下一条
FETCH NEXT FROM rs INTO p_username,p_email;
END IF;
UNTIL Done END REPEAT;
CLOSE rs;
END$$
DELIMITER ;
...全文

相关推荐

使用游标更新数据库

使用游标更新数据库

a7140156042

sqlserver游标使用步骤示例(创建游标 关闭游标)

游标(cursor)是一个存储在DBMS服务器上的数据库查询,它不是一条SELECT语句,而是被该语句检索出来的结果集。在存储了游标之后,应用程序可以根据需要滚动或浏览其中的数据。 使用游标 使用游标的步骤: 在使用游标前,必须声明(定义)它。这个过程实际上没有检索数据,它只是定义要使用的SELECT语句和游标选项。一旦声明,就必须打开游标以供使用。这个过程用前面定义的SELECT语句把数据实际检索出来。对于填有数据的游标,根据需要取出(检索)各行。在结束游标使用时,必须关闭游标,可能的话,释放游标(有赖于具体的DBMS)。声明游标后,可根据需要频繁地打开和关闭游标。在游标打开时,可根据需要频

weixin_38559727

MySql游标的使用实例

mysql游标使用的整个过程为: 1.创建游标 代码如下:DECLARE calc_bonus CURSOR FOR SELECT id, salary, commission FROM employees; 2.打开游标 代码如下:OPEN calc_bonus; 3.使用游标 代码如下:FETCH calc_bonus INTO re_id, re_salary, re_comm; 4.关闭游标 代码如下:CLOSE calc_bonus; 实例代码如下所示: 代码如下:begindeclare temp_user_id int default null;declare stop int

weixin_38741891

Oracle使用游标进行分批次更新数据的6种方式及速度比对

1.情景展示   一共有22w条数据, 需要将A表的主键更新至B表的指定字段,如何快速完成更新? 2.解决方案   声明:   解决方案不只一种,该文章只介绍快速游标法及代码实现;   两张表的ID和ID_CARD字段都建立了索引。    方式一:使用隐式游标(更新一次提交1次) --快速游标法 BEGIN   FOR TEMP_CURSOR IN (SELECT T2.ID, T2.ID_CARD                         FROM VIRTUAL_CARD10 T1, PRIMARY_INDEX10 T2                        WHERE

weixin_38719540

Oracle显示游标的使用及游标for循环

下面给大家介绍在什么情况下用隐式游标,什么情况下用显示游标: 1.查询返回单行记录时→隐式游标; 2.查询返回多行记录并逐行进行处理时→显式游标 –显示游标属性 declare CURSOR cur_emp IS SELECT * FROM emp; row_emp cur_emp%ROWTYPE; BEGIN OPEN cur_emp; FETCH cur_emp INTO row_emp; WHILE cur_emp%FOUND LOOP dbms_output.put_line(row_emp.empno||'----'||row_emp.ename); FETCH cur_emp

weixin_38660069
评论 11
收藏 已收藏
分享
返回顶部
coFinder
MySQL 57,062 成员 56,759 内容