¿Escribir parámetros opcionales dentro de procedimientos almacenados en MySQL?

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