Ver Mensaje Individual
  #1 (permalink)  
Antiguo 15/02/2015, 15:49
AndresPal
 
Fecha de Ingreso: febrero-2014
Mensajes: 48
Antigüedad: 10 años, 2 meses
Puntos: 0
Stored Procedure Problema

Hola amigos, sigo con problemas para implementar un Stored Procedure que me permita realizar la actualización de varios campos de una tabala de mi base de datos.

Específicamente lo que intento hacer es que si a la tabla crb_reservacion ingresa una reserva de un usuario con el campo "numero_vaucher" vació, y el mismo permanece 48 horas vació, automáticamente el codigo_estatus_reserva (que es el estatus de la reserva el cual entra en '2'= "sin vaucher"), sea actualizado a 4 = "cancelada", del mismo modo es necesario que en la misma tabla se actualicen también dos campos que son la fecha_inicio = 0000-00-00 y la fecha_fin = 0000-00-00. Por supuesto cuando el usuario realiza la reserva y esta se almacena en la base de datos, también se almacena la hora_reserva en un campo tipo TIME.

Agradezco su ayuda, he leído mucho sobre los SP, no soy muy experimentando en los mismos puesto a que estoy empezando a trabajar con ellos, gracias de antemano.

Acá coloco la sintaxis que estoy utilizando y abajo de ella el error:

Código MySQL:
Ver original
  1. DELIMITER$$    
  2.     DROP PROCEDURE IF EXISTS tumba_reserva$$
  3.      
  4.         CREATE PROCEDURE tumba_reserva ()
  5.        
  6.  
  7.           DECLARE hora_reserva TIME;    
  8.           DECLARE hora_actual TIME;
  9.       DECLARE fecha_inicio DATE;
  10.           DECLARE fecha_fin DATE;  
  11.           DECLARE codigo_estatus_reserva INTEGER(1);
  12.          
  13.           SET hora_actual = CURTIME();
  14.          
  15.           SELECT ( if ( numero_vaucher = '' OR numero_vaucher is Null, 0 )And codigo_estatus_reserva = '2'), hora_reserva
  16. FROM crb_reservacion
  17.      
  18.           IF (codigo_estatus_reserva  = 2) AND (hora_actual - hora_reserva >= 48) THEN
  19.             UPDATE crb_reservacion SET codigo_estatus_reserva = 4, fecha_inicio = 0000-00-00, fecha_fin = 0000-00-00;
  20.           END IF;
  21.         END $$
  22. DELIMITER$$


Aquí el error que me arroja el MyAdmin:

Código MySQL:
Ver original
  1. Error
  2. consulta SQL:
  3.  
  4.  
  5.   DROP PROCEDURE IF EXISTS tumba_reserva
  6.      
  7.         CREATE PROCEDURE tumba_reserva ()
  8.        
  9.  
  10.           DECLARE hora_reserva TIME;
  11. MySQL ha dicho: Documentación
  12.  
  13. #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CREATE PROCEDURE tumba_reserva ()
  14.        
  15.  
  16.           DECLARE hora_res' at line 3

Última edición por gnzsoloyo; 15/02/2015 a las 22:00