Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

if dentro de transaction

Estas en el tema de if dentro de transaction en el foro de Mysql en Foros del Web. Hola, tengo 1 update dentro de una transaccion... y quisiera preguntar si un parámetro no es NULL para iniciar una segunda actualización: aqui un pequeño ...
  #1 (permalink)  
Antiguo 23/01/2012, 08:26
Avatar de cesarpunk  
Fecha de Ingreso: enero-2008
Ubicación: Lima
Mensajes: 943
Antigüedad: 16 años, 3 meses
Puntos: 9
if dentro de transaction

Hola, tengo 1 update dentro de una transaccion... y quisiera preguntar si un parámetro no es NULL para iniciar una segunda actualización:

aqui un pequeño ejemplo:

Código:
CREATE PROCEDURE `sp_update`
(
        IN  p_Id	INT(11),
	IN  p_Nombre	VARCHAR(30),
        IN  p_Password	VARCHAR(50),
	OUT p_return_code 	TINYINT UNSIGNED
)

BEGIN 
	
	DECLARE count INT(11);
	DECLARE estado CHAR(1);
	
	DECLARE exit handler for sqlexception
  	BEGIN
   		-- ERROR
    		set p_return_code = 1;
    		rollback;
  	END;

	DECLARE exit handler for sqlwarning
  	BEGIN
    		-- WARNING
    		set p_return_code = 2;
    		rollback;
  	END;
		
	SET count = (SELECT count(Nombre) FROM usuario WHERE Nombre= p_Nombre AND Id<>p_Id);
	
	IF count = 0 THEN

		START TRANSACTION;

		UPDATE usuario
    		SET    
           		Nombre   = p_Nombre
                 
    		WHERE  	Id = p_Id;

               --AQUI EL ERROR

               IF p_Password IS NOT NULL THEN

			UPDATE usuario
    			SET    
           			Password   = p_Password
                 
    			WHERE  	Id = p_Id;

		ENDIF;

		COMMIT;

		-- SUCCESS
  		set p_return_code = 0;
		
		-- EXISTS
		SET estado = 'a';
  		SELECT estado;
	
	ELSE	

		-- EXISTS
		SET estado = 'e';
  		SELECT estado;

   	END IF;

END
Me genera un error:

#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 '; COMMIT; ...

No se puede hacer un if dentro de la transacción o es otro error? Espero su ayuda.
__________________
Quitenme la vida pero no la bebida.
  #2 (permalink)  
Antiguo 23/01/2012, 08:54
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: if dentro de transaction

Hola cesarpunk:

Creo que renemos otro problema de no poner atención en lo que se escribe.

Checa la sintaxis del IF:

Código:
IF search_condition THEN statement_list
    [ELSEIF search_condition THEN statement_list] ...
    [ELSE statement_list]
END IF 

Observas cómo se cierra???, entonces por qué pones esto:

Código:
WHERE  	Id = p_Id;
ENDIF; 
y más abajo tienes esto...

SELECT estado;
END IF;

Compañero, la idea del foro no es que corras a publicar una pregunta cada que una consulta te marque un error... hay que tratar de poner atención a lo que el DBMS te dice acerca del problema con la consulta... sobre todo cuando se trata de errores de sintaxis, estos suelen ser culpa del desarrollador.

Saludos
Leo.
  #3 (permalink)  
Antiguo 23/01/2012, 09:22
Avatar de cesarpunk  
Fecha de Ingreso: enero-2008
Ubicación: Lima
Mensajes: 943
Antigüedad: 16 años, 3 meses
Puntos: 9
Respuesta: if dentro de transaction

Uh verdad era la separación... tengo que cambiar de IDE.... gracias!
__________________
Quitenme la vida pero no la bebida.

Última edición por cesarpunk; 23/01/2012 a las 09:53

Etiquetas: select, sql, transacciones
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:50.