ホームページ >バックエンド開発 >PHPチュートリアル >カーソルを使用してデータを更新すると、無限ループが発生します。説明してください。
カーソルを使用してデータを更新すると、無限ループに陥ります
データ移行
について説明してください。
古いデータベースから新しいデータベースにデータをインポートします。
データテーブルは異なりますが、一部のフィールドのみが同じです。
が欲しいです
このライブラリのユーザーテーブルのデータを
にインポートします
以下に示す NEW_DB の `USER_ACCOUNT テーブルは、実際にはループに陥り、10 分以上実行されました
<br /> DELIMITER $$<br /> <br /> CREATE DEFINER=`root`@`localhost` PROCEDURE `pr_test3`()<br /> BEGIN <br /> DECLARE p_username VARCHAR(20); <br /> DECLARE p_email VARCHAR(20) ; <br /> DECLARE Done INT; <br /> #得到游标,选择老的表里面的username和email<br /> DECLARE rs CURSOR FOR SELECT username,email FROM user LIMIT 100; <br /> DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET Done = 1; <br /> <br /> OPEN rs;<br /> FETCH NEXT FROM rs INTO p_username,p_email; <br /> #开始遍历 <br /> REPEAT <br /> IF NOT Done THEN <br /> #执行需要的操作 <br /> SELECT @p_username;<br /> #插入到新的库的表<br /> INSERT INTO NEW_DB.`USER_ACCOUNT` (USERID,`PASSWORD`,`EMAIL`,`REGTIME`,`MODTIME`) VALUES (p_username,,'123456',p_email,NOW(),NOW());<br /> #下一条<br /> FETCH NEXT FROM rs INTO p_username,p_email; <br /> END IF; <br /> UNTIL Done END REPEAT; <br /> CLOSE rs; <br /> END$$<br /> DELIMITER ;<br />