Soy nuevo en procedimientos almacenados, y pretendia hacer uno para no tener que codificar lo mismo en php. Y que asi sea mas rapido ( aunque no hace casi nada ) es mas por no tener que codificarlo en php.
AL tema, se que fijo que hay formas mejores de hacerlo pero crei que asi funcionaria
Código:
Dos problemas, el primero, no me crea el procedimiento por el LIMIT, me da error en actual, si le pongo solo 1 lo crea ( necesito el actual ) y el segundo , crea la tabla con nombre tabla y no lo que deberia valer la variable tabla.DELIMITER $$ DROP PROCEDURE IF EXISTS `hola`.`vacdestra`$$ CREATE PROCEDURE `hola`.`vacdestra` () BEGIN DECLARE total INT; DECLARE actual INT; DECLARE vac INT; DECLARE tra INT; DECLARE des INT; DECLARE dni VARCHAR(9); DECLARE tabla VARCHAR(6); SET actual=0; SET vac=0; SET tra=0; SET des=0; SELECT CONCAT( MONTH(CURRENT_DATE) , YEAR(CURRENT_DATE) ) INTO tabla; CREATE TABLE tabla ( conductor VARCHAR(9) , t TINYINT(2) , d TINYINT(2) , v TINYINT(2) ); SELECT COUNT(DISTINCT conductor) INTO total FROM vacdestra; WHILE actual < total DO SELECT conductor INTO dni FROM vacdestra LIMIT actual,1; SELECT COUNT(*) INTO vac FROM vacdestra WHERE conductor=dni AND actividad="V"; SELECT COUNT(*) INTO tra FROM vacdestra WHERE conductor=dni AND actividad="T"; SELECT COUNT(*) INTO des FROM vacdestra WHERE conductor=dni AND actividad="D"; INSERT INTO tabla VALUES ( tra , des , vac ); SET actual = actual + 1; END WHILE; END$$ DELIMITER ;
Alguna idea?
Gracias.