pero no tengo ningun cursor que no se hallan cerrado. ?
Código SQL:
Ver original
USE almacen3; DROP PROCEDURE IF EXISTS devuelve_informe_venta; DROP TABLE IF EXISTS informe; DELIMITER | 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 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; OPEN crs_cod_fact; 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 ; CALL devuelve_informe_venta(20140105,20140105);