Buenas noches,
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:
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 ;
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.
Alguna idea?
Gracias.