Ver Mensaje Individual
  #2 (permalink)  
Antiguo 03/08/2014, 06:53
Avatar de gnzsoloyo
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, 5 meses
Puntos: 2658
Respuesta: error 1326 en fallos

Pues en realidad la respuesta es bastante simple: Estás abriendo el segundo cursor dentro del LOOP donde lo vas a usar, cuando deberías abrirlo fuera.
El segundo ciclo que se produzca intenta abrir nuevamente un cursor que ya está abierto.
Código MySQL:
Ver original
  1. crs_cod_pro_loop:LOOP
  2.    OPEN crs_cod_prod; -- Estas abriendo el cursor dentro del LOOP
  3.    fetch crs_cod_prod INTO cod_producto, nombre_producto,costo,nit;
  4.    INSERT INTO informe VALUES('',fecha_factura,cod_producto,nombre_producto,costo,nit);
  5.    IF v_control THEN  
  6.       close crs_cod_prod;
  7.       leave crs_cod_pro_loop;
  8.    END IF;
  9. END LOOP crs_cod_pro_loop;
Como notas adicionales, te recomiendo no crear tablas puras, ni tablas memory para uso temporal. Usa tablas TEMPORARY, en las que no se indica el ENGINE.
Extensivamente, yo ni siquiera usaría cursores para toda la tarea que haces, pero eso sería mi solución.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)