Ver Mensaje Individual
  #1 (permalink)  
Antiguo 23/02/2010, 13:37
jesusjj
 
Fecha de Ingreso: noviembre-2007
Mensajes: 154
Antigüedad: 16 años, 5 meses
Puntos: 2
Pregunta Timeout al crear Procedimiento Almacenado en local

Buenas tardes:

Quería ver si me podían ayudar un con un procedimiento almacenado.

En principio no me da error, pero al intentar 'cargarlo', me da un timeout, a pesar de ser en local.

He probado la carga por fichero y directamente copiándolo, pero nada.

El error que pone es:

Cita:
Fatal error: Maximum execution time of 300 seconds exceeded in Z:\wamp\apps\phpmyadmin3.2.0.1\libraries\import\sq l.php on line 259
No sé si realmente ese es el problema, o no, ya que me extraña que siendo en local, tras 5 minutos, aprox, dé el error. Lo achaco más a una incoherencia, que no llega a devolver un error.

La versión de MySQL es 5.1.36

Pongo el procedimiento, por si alguien encuentra algo raro, o piensa que se puede hacer mejor de otra manera.

Muchas gracias.



Código:
DELIMITER $$

CREATE PROCEDURE sp_insertarPresupuesto (idCliente int, fechaAlta datetime)

-- iniciamos el Procedimiento

BEGIN
	
	-- declaramos las variables
	declare idPresupuesto int;
	declare idCliente int;
	declare Referencia varchar(25);
	declare Detalle varchar(250);
	declare IVA int;
	declare PrecioUnitario decimal(5,2);
	declare Cantidad int;

	-- insertamos la cabecera del presupuesto
	INSERT INTO LM_Presupuestos values ('',idCliente, FechaAlta);
	
	-- recuperamos el idPresupuesto generado
	SET idPresupuesto := LAST_INSERT_ID();

	-- Comienza el cursor para insertar la tabla Detalle con los datos temporales
	-- declaramos el cursor
	DECLARE detallePrto CURSOR FOR
	
	-- capturamos los datos de la tabla temporal
    	select 
--            idPresupuesto,
    		idCliente,
    		Referencia,
    		Detalle,
    		IVA,
    		PrecioUnitario,
    		Cantidad
    	from LM_tmpPresupuestos;
	
	-- iniciamos CURSOR
    	OPEN detallePrto
	
	-- iniciamos el bucle
    
        REPEAT
    		FETCH next FROM detallePrto;
    		INTO idPresupuesto, idCliente, Referencia, Detalle, IVA, PrecioUnitario, Cantidad
    		WHILE @@fetch_status = 0    		
    		
    			INSERT INTO LM_detallePresupuesto values ('', idPresupuesto, idCliente, Referencia, Detalle, IVA, PrecioUnitario, Cantidad);    		
    	
        UNTIL done END REPEAT;
        
		CLOSE detallePrto;		
	
	-- se vacía la tabla temporal
	TRUNCATE TABLE LM_tmpPresupuestos;
	
-- finalizamos el Procedimiento

END

-- se usa el delimitador para indicar que se sale

$$

DELIMITER;