Bueno anteriormente explique aquí brevemente sobre algunas ventajas sobre los Stored Procedures de MySQL, ahora veremos como generarlos, la sintaxis es sencilla:

DELIMITER $$
 
DROP PROCEDURE IF EXISTS `municipio`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `municipio`(
  IN	opcion	int,                         /** argumento 1 **/
  IN	municipio_id	int                  /** argumento 2 **/
)
BEGIN
 
/** opcion 1: muestra toda la info de un solo municipio **/
IF opcion = 1 THEN 
         /*el  asterisco ( * ) es como medida ilustrativa, en ambiente de producción se deben seleccionar los campos*/
	SELECT * FROM municipio WHERE cve_mun = municipio_id; 
END IF;
 
/** opcion 2: muestra todos los municipios por nombre y ID **/
IF opcion = 2 then
	SELECT cve_mun AS value, municipio AS label FROM municipio;
END IF;
 
END$$
 
DELIMITER ;

Explicación: este procedimiento podrá hacer una de 2 cosas consultas que escribí, todo depende de los argumentos dados al momento de la llamada.
Si queremos que nos devuelva todos los registros de la tabla municipio debemos hacer lo siguiente:

CALL municipio(2,NULL)

Con esto se le esta diciendo que la variable opcion = 2 y la variable municipio_id = null y al momento de evaluar la condición entrará por la que nosotros habíamos predispuesto.

Si queremos que nos muestra toda la info de un municipio se hace de la siguiente forma:

CALL municipio(1,10)

Y así de fácil se generan.