Ver Mensaje Individual
  #1 (permalink)  
Antiguo 15/07/2014, 14:02
saavedraphp1
 
Fecha de Ingreso: julio-2008
Mensajes: 4
Antigüedad: 15 años, 9 meses
Puntos: 0
Pregunta Store Procedure - cursor - loop - insert

Hola a todos,

Por favor necesito ayuda con este store procedure, continuación detallo su funcionalidad:


1.- Leer N registros y por cada uno hace un insert en otra tabla(Insert Into temp, no me genero la tabla temporal tuve que crearlo fisicamente).

El problema es que el ultimo registro lo hace dos veces Ejemplo:
en vez de copiar


1,Peru
2,Ecuador
3,Chile

Copia
1,Peru
2,Ecuador
3,Chile
4,Chile




Código MySQL:
Ver original
  1. DELIMITER $$
  2.  
  3. CREATE DEFINER=`root`@`localhost` PROCEDURE `duplicar_registros_idiomas`(in paramId int)
  4.     declare count_1 int;
  5.     declare filas INT;
  6.     declare var_nombre varchar(255);
  7.     DECLARE done INT DEFAULT FALSE;
  8.  
  9.     DECLARE cur CURSOR FOR SELECT nombre FROM paises WHERE  id < paramId;
  10.  
  11.  
  12.     #declare handle
  13.     declare continue HANDLER FOR NOT FOUND SET done = TRUE;
  14.  
  15.     delete from temp;
  16.  
  17.     #OPEN CURSOR
  18.     OPEN cur;
  19. set done = false;
  20.     #iniciando el loop
  21.     FETCH cur INTO var_nombre;
  22.    
  23.     if(var_nombre is null = false) then
  24.         insert into temp (nombre,idioma_id) values (var_nombre,'EN');
  25.     END IF;
  26.  until done  end repeat;
  27.  
  28. close cur;
  29.  
  30. SELECT * FROM temp;
  31.  

Última edición por gnzsoloyo; 15/07/2014 a las 14:11