Ver Mensaje Individual
  #1 (permalink)  
Antiguo 23/01/2012, 08:26
Avatar de cesarpunk
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.