Me gustaría crear un procedimiento almacenado que actualice todos los campos en una tabla o solo algunos de ellos según los parámetros que se le pasen.
¿Cómo creo un procedimiento almacenado que acepte parámetros opcionales?
Optional Parameters
aún no son compatibles con MySQL. Estoy sugiriendo que pase el valor null
en su parámetro y dentro de su procedimiento almacenado tiene una statement IF
.
DELIMITER $$ CREATE PROCEDURE procName (IN param VARCHAR(25)) BEGIN IF param IS NULL THEN -- statements ; ELSE commands -- statements ; END IF; END$$ DELIMITER ;
Un caso especial es cuando el parámetro no puede ser NULL, es decir, porque es una clave. Utilizo un truco para estos casos: configuro el parámetro en -1:
CREATE PROCEDURE procCreate (IN id_cosa INT(11)) BEGIN IF id_cosa != -1 THEN ~~(your code here)~~ END IF END