aqui un pequeño ejemplo:
Código:
Me genera un error: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
#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.