Ver Mensaje Individual
  #6 (permalink)  
Antiguo 23/07/2014, 18:12
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: problemilla Procedure

Una pregunta, antes de avanzar en el caso.
En el cursor "crs_cod_prod " tienes esta query:

Código MySQL:
Ver original
  1. SELECT ord_cod_zap, pro_nomb, cal_cost, pro_nit
  2. FROM ord_compra oc, Producto p, Calzado c
  3. 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:
Código MySQL:
Ver original
  1.     FROM Factura
  2.     WHERE fact_fecha >= fecha_inicio
  3.         AND fact_fecha <= fecha_final

no tiene ningún sentido. Es un desperdicio de recursos de servidor

Es muchísimo más simple hacer:
Código MySQL:
Ver original
  1. FROM Factura
  2. WHERE fact_fecha >= fecha_inicio
  3.         AND fact_fecha <= fecha_final
  4. INTO total_registro;

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.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 23/07/2014 a las 18:19