Mysqlカーソルの遍歴

1031 ワード

DELIMITER $$

USE `snhel`$$

DROP PROCEDURE IF EXISTS `copy`$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `copy`()
BEGIN
DECLARE ID2 INTEGER;//      
DECLARE PRODUCTCODE2 VARCHAR(100);//      
DECLARE PRODUCTNAME2 VARCHAR(100);//      ,    


DECLARE done INT DEFAULT 0;
DECLARE  copyRecords CURSOR FOR SELECT ID,PRODUCTCODE,PRODUCTNAME FROM producteffect;//     ,        
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done=1; //        

START TRANSACTION;//    
OPEN copyRecords;//    
flag:LOOP//    
    FETCH copyRecords INTO ID2,PRODUCTCODE2,PRODUCTNAME2;//      ,          ,      。
    
    IF done = 1 THEN  LEAVE flag; END IF;//      ,    
    
    REPLACE INTO backups(ID,PRODUCTCODE, SHOPCODE) VALUES (ID2,PRODUCTCODE2,PRODUCTNAME2);//    ,           
    
END LOOP;

CLOSE copyRecords;//    
COMMIT;//    
END$$

DELIMITER ;