Una pregunta, antes de avanzar en el caso.
En el cursor "crs_cod_prod " tienes esta query:
Código MySQL:
Ver originalSELECT ord_cod_zap
, pro_nomb
, cal_cost
, pro_nit
FROM ord_compra oc
, Producto p
, Calzado c
WHERE ord_cod_fact
= codigo_factura
;
¿Cómo se relaciona la tabla "Calzado"? Porque como la tienes puesta, estás generando un producto cartesiano, lo que daría resultados completamente falsos...
Por otro lado, hacer un CURSOR para ejecutar esto:
no tiene ningún sentido. Es un desperdicio de recursos de servidor
Es muchísimo más simple hacer:
Adicionalmente, veo que ni te has molestado en leer el link que te pasé, ya que estás creando el HANDLER
antes de los cursores.
Si te tomas el trabajo de leer el link verás este detalle:
Cita: 2. No se pueden definir variables en el SP con posterioridad al CURSOR, ni se puede definir un HANDLER antes del CURSOR.
Esa nota está tomada del
Manual de referencia de MySQL, donde se expresa:
Cita: Los cursores deben declararse antes de declarar los handlers, y las variables y condiciones deben declararse antes de declarar cursores o handlers.
Por favor, cuando se te pase un link, léelo. Lo ponemos para que leas alguna referencia que viene al tema.
Yo sigo analizando el SP porque creo que hay un modo más simple de lograr lo que pretendes.