Ver Mensaje Individual
  #1 (permalink)  
Antiguo 16/04/2014, 10:55
Avatar de temerariomalaga
temerariomalaga
 
Fecha de Ingreso: marzo-2013
Ubicación: Londres
Mensajes: 156
Antigüedad: 11 años, 1 mes
Puntos: 9
Usar variables de usuario en procedimientos

Buenas, tengo dos procedimientos, el primero consulta una fecha y una hora y devuelve en una variable el dia que es (sabado mañana, sabado tarde, etc).
Ese procedimiento llama a otro procedimiento pasandole el dia para a continuación comprobar en una tabla si determinado dia está marcado a si.
El problema está en que si recibo la variable como de usuario (@dia) entonces me da fallo (error sintáctico) pero si recibo como (dia CHAR) después la consulta no me devuelve resultados.
Dejo aquí el código:
Código MySQL:
Ver original
  1. CREATE PROCEDURE getDia(IN codigo INTEGER, IN pabellon INTEGER)
  2.     SELECT DATE_FORMAT(Fecha, '%w') INTO @fecha FROM PARTIDO WHERE Codigo_partido=(SELECT codigo);
  3.     SELECT Hora INTO @hora FROM PARTIDO WHERE Codigo_partido=(SELECT codigo);
  4.     IF @fecha=0 AND @hora<'15:00' THEN
  5.         SET @dia='DM';
  6.     END IF;
  7.     IF @fecha=0 AND @hora>'15:00' THEN
  8.         SET @dia='DT';
  9.     END IF;
  10.     IF @fecha=1 THEN
  11.         SET @dia='L';
  12.     END IF;
  13.     IF @fecha=2 THEN
  14.         SET @dia='M';
  15.     END IF;
  16.     IF @fecha=3 THEN
  17.         SET @dia='X';
  18.     END IF;
  19.     IF @fecha=4 THEN
  20.         SET @dia='J';
  21.     END IF;
  22.     IF @fecha=5 THEN
  23.         SET @dia='V';
  24.     END IF;
  25.     IF @fecha=6 AND @hora<'15:00' THEN
  26.         SET @dia='SM';
  27.     END IF;
  28.     IF @fecha=6 AND @hora>'15:00' THEN
  29.         SET @dia='ST';
  30.     END IF;
  31.     CALL getDisponibles(@dia);
  32. END;$$
  33.  
  34. DROP PROCEDURE IF EXISTS getDisponibles$$
  35. CREATE PROCEDURE getDisponibles(IN @dia CHAR)
  36.     SELECT EQUIPO_ARBITRAL.Codigo_arbitro FROM EQUIPO_ARBITRAL INNER JOIN OFICIAL
  37.     ON EQUIPO_ARBITRAL.Codigo_arbitro=OFICIAL.Codigo_arbitro INNER JOIN DISPONIBILIDAD
  38.     ON OFICIAL.Codigo_arbitro=DISPONIBILIDAD.Codigo_arbitro WHERE @dia='Si';
  39. END;$$
__________________
Málaga Club de Fútbol: Memoria, Compromiso, Fe