CREATE TABLE `aa` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`b1` int(11) DEFAULT NULL,
`abc` int(200) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `b` (`b1`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
2、目標表
CREATE TABLE `test` (
`auto_id` int(11) NOT NULL AUTO_INCREMENT,
`a1` int(10) NOT NULL,
`a2` int(11) DEFAULT NULL,
`a3` int(11) DEFAULT NULL,
PRIMARY KEY (`auto_id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8 COMMENT='測試表'
3、存儲過實現:注意格式
DELIMITER $$
DROP PROCEDURE IF EXISTS `record_timestamp_deal`$$
#創建存儲過程
CREATE PROCEDURE record_timestamp_deal()
BEGIN
#定義獲取值存儲的變量
DECLARE a4 INT;
DECLARE a5 INT;
DECLARE a6 INT;
DECLARE is_done INT DEFAULT 0;
DECLARE cur CURSOR FOR SELECT id,b1,abc FROM aa;
#異常處理
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET is_done =1;
OPEN cur;
#取出遊標值至定義的變量中
FETCH NEXT FROM cur INTO a4,a5,a6;
REPEAT
IF NOT is_done THEN
INSERT INTO test(a1,a2,a3)VALUES(a4,a5,a6);
END IF ;
#重新抓取數據進入循環
FETCH NEXT FROM cur INTO a4,a5,a6;
#結束循環
UNTIL is_done END REPEAT ;
#關閉遊標
CLOSE cur ;
END $$
##調用存儲過程
call record_timestamp_deal