Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Store Procedure - cursor - loop - insert

Estas en el tema de Store Procedure - cursor - loop - insert en el foro de Mysql en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 15/07/2014, 14:02
 
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
  #2 (permalink)  
Antiguo 15/07/2014, 14:15
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Store Procedure - cursor - loop - insert

Por lo pronto, esta parte sería mejor de otro modo:
Código MySQL:
Ver original
  1. if(var_nombre is null = false) then
te irá mejor:
Código MySQL:
Ver original
  1. IF var_nombre IS NOT NULL THEN
  2. ...

Incluso yo lo pondría:

Código MySQL:
Ver original
  1. IF (var_nombre IS NOT NULL) OR (NOT done) THEN
  2. ...
(los paréntesis son sólo a modo de claridad de código)
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: cursor, insert, loop, procedure, registro, select, store, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:30.