2011-12-20 225 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