2011-12-20 84 views
0

我从我的程序中得到一个重复的记录,插入330+条记录。 但只在最后一个记录。换句话说,最后2条记录并不明显,它们是相同的。这个过程是什么让最后一个记录得到重复。为什么我只能在最后一个记录中插入重复记录?

DELIMITER $$ 

DROP PROCEDURE IF EXISTS `zzExclude_Products` $$ 
CREATE DEFINER=`root`@`%` PROCEDURE `zzExclude_Products`() 
BEGIN 

DECLARE done INT DEFAULT 0; 
DECLARE VAR_ENTITY_ID VARCHAR(50); 

DECLARE CUR_NO CURSOR FOR 

SELECT DISTINCT NO 
FROM stage_product_data.ITEMMAST AS IM 
JOIN stage_product_data.zzLive_Products AS LIVE ON IM.NO = LIVE.SKU 
WHERE DIVISION = '30' AND STATUS NOT IN ('XX','YY','ZZ'); 


DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; 

OPEN CUR_NO; 
REPEAT 

FETCH CUR_NO INTO VAR_ENTITY_ID; 
INSERT INTO zz_CATALOG (TYPE, ENTITY_ID, ESTRICTION_TYPE, RESTRICTION_VALUE) 
VALUES ('Product', VAR_ENTITY_ID, 'Country', 'ALL'); 

UNTIL done END REPEAT; 
CLOSE CUR_NO; 

END $$ 

DELIMITER ; 

回答

2

这里真的不需要光标。这可以在一个INSERT语句中完成。

INSERT INTO zz_CATALOG 
    (TYPE, ENTITY_ID, ESTRICTION_TYPE, RESTRICTION_VALUE) 
    SELECT DISTINCT 'Product', EDPNO, 'Country', 'ALL' 
     FROM stage_product_data.ITEMMAST AS IM 
      JOIN stage_product_data.zzLive_Products AS LIVE 
       ON IM.EDPNO = LIVE.SKU 
     WHERE DIVISION = '30' 
      AND STATUS NOT IN ('XX','YY','ZZ'); 
0

你确定它是程序,而不是你插入的数据中的重复?

+0

谢谢我检查了一下,我没有在查找表中使用。 – JoJo 2011-12-20 16:46:55

相关问题