Ver Mensaje Individual
  #1 (permalink)  
Antiguo 11/03/2008, 18:25
MinoX
 
Fecha de Ingreso: enero-2008
Mensajes: 7
Antigüedad: 16 años, 3 meses
Puntos: 0
Procedimiento Almacenado Variables

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.

Última edición por MinoX; 11/03/2008 a las 18:45 Razón: Faltaban cosas en la explicacion.