使用游标将数据更新,陷入死循环,求解释
要将老的数据库里面的数据导入到新的数据库。
数据表不一样,只是有些字段一样。
我要
将这个库里面的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 ;相关推荐
使用游标更新数据库
使用游标更新数据库
sqlserver游标使用步骤示例(创建游标 关闭游标)
游标(cursor)是一个存储在DBMS服务器上的数据库查询,它不是一条SELECT语句,而是被该语句检索出来的结果集。在存储了游标之后,应用程序可以根据需要滚动或浏览其中的数据。 使用游标 使用游标的步骤: 在使用游标前,必须声明(定义)它。这个过程实际上没有检索数据,它只是定义要使用的SELECT语句和游标选项。一旦声明,就必须打开游标以供使用。这个过程用前面定义的SELECT语句把数据实际检索出来。对于填有数据的游标,根据需要取出(检索)各行。在结束游标使用时,必须关闭游标,可能的话,释放游标(有赖于具体的DBMS)。声明游标后,可根据需要频繁地打开和关闭游标。在游标打开时,可根据需要频
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
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
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


