Ver Mensaje Individual
  #1 (permalink)  
Antiguo 01/04/2015, 10:48
MauMontes
 
Fecha de Ingreso: marzo-2015
Mensajes: 12
Antigüedad: 9 años, 1 mes
Puntos: 0
cursor mysql, gran duda

Hola que tal gente, tengo un problemilla y recurro una vez mas a ustedes...el problema es el siguiente, a ver si me pueden a yudar porfa, el primer cursor "micursor" trae el rut de la tabla alumno para el curso con id=13, este curso tiene solo dos alumnos, por lo tanto , esa consulta trae dos registros: ejemplo: 142345674, 165434566

luego en el insert lo que intento hacer es que, inserte dos registros en la tabla libcomunicaciones, si bien me hace el insert y la iteracion (2 veces), me inserta con el mismo rut que se extrae de "micursor", es decir hace dos insert pero con el rut 142345674, y lo que quiero hacer es un insert con el rut 142345674 y otro con el rut 165434566 ..

He tratado de exponer el problema lo mas claro posible..se que ando cerca de la solucion, pero no doy con ella, me debe faltar un LOOP o algo, pero he intentado y no logro solucionarlo ... de ante mano muchas gracias

Código SQL:
Ver original
  1. DROP PROCEDURE IF EXISTS `prueba`$$
  2.  
  3. CREATE DEFINER=`root`@`localhost` PROCEDURE `prueba`()
  4.  BEGIN
  5.  
  6.    DECLARE rut VARCHAR(10);
  7.    DECLARE contador INT(10);
  8.    DECLARE inicio INT (10) DEFAULT 0;
  9.    DECLARE micursor CURSOR FOR SELECT rut_alum FROM alumno WHERE id_curso=13;
  10.    DECLARE micursor2 CURSOR FOR SELECT COUNT(rut_alum) FROM alumno WHERE id_curso=13;
  11.      
  12.    OPEN micursor;
  13.    OPEN micursor2;
  14.      
  15.     FETCH micursor INTO rut;
  16.     FETCH micursor2 INTO contador;
  17.    
  18.           WHILE inicio < contador DO   
  19.    
  20.            INSERT INTO libcomunicacion(id_com,id_curso,des_com,fech_com,fecha_dada,tipo_com,rut_alum)
  21.                 VALUES('','13','comunicacion desde el procedimiento','2015-06-12',NOW(),'r',rut);  
  22.            SET inicio = inicio+1;      
  23.           END WHILE;
  24.    
  25.    CLOSE micursor2;    
  26.    CLOSE micursor;
  27.    
  28.  END$$