Saludos, gracias por las recomendaciones ya hize las correcciones y por lo menos no muestra errores en "compilacion" en el workBench.
Resulta que si es verdad, arroja el query que tengo en el joins con tres tablas unos
resultados aunque no falsos si repetitivos.
Logre quitar una variable acumuladora y el codigo quedo asi. Trato de corregir el query para mirar resultados y sigo con el otro procedimiento que me falta el cual consiste en que la tabla en memoria almacene los query y realize informes muchos mas faciles.
Código SQL:
Ver originaldelimiter //
CREATE PROCEDURE devuelve_informe_venta(IN fecha_inicio DATE, IN fecha_final DATE)
BEGIN
DECLARE fecha_factura DATE;
DECLARE codigo_factura INT DEFAULT 0;
DECLARE cod_producto INT DEFAULT 0;
DECLARE costo DOUBLE DEFAULT 0.0;
DECLARE total_registro INT DEFAULT 0;
DECLARE acumulador INT DEFAULT 0;
DECLARE nombre_producto VARCHAR(20);
DECLARE nit INT DEFAULT 0;
DECLARE v_control bool DEFAULT FALSE;
DECLARE crs_cod_fact CURSOR FOR SELECT fact_cod_fac,fact_fecha FROM Factura
WHERE fact_fecha >= fecha_inicio AND fact_fecha <= fecha_final;
DECLARE crs_cod_prod CURSOR FOR SELECT ord_cod_zap,pro_nomb,cal_cost,pro_nit FROM ord_compra oc, Producto p,Calzado c
WHERE ord_cod_fact = codigo_factura;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET v_control = TRUE;
CREATE TEMPORARY TABLE informe (num INT(5) AUTO_INCREMENT PRIMARY KEY,fecha DATE,cod_cal INT(10),nomb_cal VARCHAR(20),costo DECIMAL(6,2),nit INT(10))engine=memory;
crs_cod_fact_loop:loop
fetch crs_cod_fact INTO codigo_factura,fecha_factura;
IF v_control THEN
leave crs_cod_fact_loop;
close crs_cod_fact;
END IF;
crs_cod_pro_loop:LOOP -- segundo LOOP donde realiza el la busqueda de nombre de productos, codigo y costo.
OPEN crs_cod_prod;
fetch crs_cod_prod INTO cod_producto, nombre_producto,costo,nit;
INSERT INTO informe VALUES('',fecha_factura,cod_producto,nombre_producto,costo,nit);
IF v_control THEN
close crs_cod_prod;
leave crs_cod_pro_loop;
END IF;
END LOOP crs_cod_pro_loop;
END LOOP crs_cod_fact_loop;
DROP TABLE IF EXISTS informe;
END;//
delimiter ;