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.