Ver Mensaje Individual
  #2 (permalink)  
Antiguo 10/02/2015, 10:45
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Stored Procedure

Hay más de un error...
1) Un SP no puede contener una consulta sin asignar resultados a variables, si no es la última linea del body. Y eso sólo tiene sentido si la consulta es el resultado esperado en pantalla, o la salida de datos que se tomará desde un programa.
2) A tu IF() le falta la condición de FALSE, por lo que está mal escrito.
3) No estás cerrando la linea de ese select con el terminador de sentencias, por lo que ni siquiera debe estar compilando.
4) Ese script sólo podría cargarse desde una aplicación. DE pretender hacerlo desde consola de MySQL fallará, y si lo haces desde phpMyadmin también, a menos que determines un delimiter distinto.
Para compilar en consola de MySQL:
Código MySQL:
Ver original
  1. DROP PROCEDURE IF EXISTS tumba_reserva;
  2. DELIMITER $$
  3.  
  4. CREATE PROCEDURE tumba_reserva ()
  5.     DECLARE hora_actual TIME;
  6.     DECLARE hora_res TIME;
  7.  
  8.     SET hora_actual = CURTIME();
  9.     SELECT (IF((numero_vaucher = '' OR numero_vaucher IS NULL) AND codigo_estatus_reserva = 2), hora_reserva, 'Aca va la salida por FALSE')
  10. INTO hora_res
  11.     FROM crb_reservacion;
  12.  
  13.     IF TIMESTAMPDIFF(, HOUR, hora_res, hora_actual) >= 1 THEN
  14.         UPDATE crb_reservacion WHERE codigo_estatus_reserva = 4;
  15.     END IF;
  16. END$$
  17.  
  18. DELIMITER ;

Aclaremos una cosa, este código no garantiza que funcione bien, solo no debería dar error al compilar. No lo garantiza, porque a mi entender está mal pensado, ya que la consulta que pones devolverá múltiples registros, por lo que el INTO no funcionará, y el UPDATE está actualizando todos los registros que existan con esa condición, lo que a mi entender es ilógico.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)