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