Estoy realizando un SP para un formulario, de tal modo que los valores del formulario se envían y son procesados por el procedimiento almacenado.
 
Dentro del formulario, hay un desplegable llamado "Cerrador"  que contiene un primer valor llamado "Todos" (con valor '555'), y el resto de valores son distintos "cerradores" cuyos valores son tipo texto. 
La idea es que cuando envían el valor '555' (Todos), el SP busque todos los valores en el campo '080_acciones.cerrador', pudiendo existir en el mismo valores 'null', vacios '', o con un nombre definido. Para ello he incluido la condición:   
Código SQL:
Ver original- IF ($m!='555') THEN SET  $m2=$m; ELSE SET $m2='_%';END IF; 
siendo $m, la variable in enviada y $m2, el valor a buscar en el SELECT. 
Dentro del SELECT se encuentra la expresion "WHERE 080_acciones.cerrador like $m2 ". 
Cuando $Ms (cerrador enviado) es uno definido, todo va ok; el problema es cuando se envía '555' (Todos) y la segunda para del IF de arriba (
else SET $m2='_%';end if;) no obtiene TODOS los datos del campo '080_acciones.cerrador'. 
Tengo dudas de si el enfoque que estoy realizando es el adecuado, o si podria hacerse de otro modo, por lo que agradecería comentarios. 
PD; Adjunto parte del  código del SP    
Código SQL:
Ver original- DELIMITER $$ 
-   
- CREATE DEFINER=`root`@`%` PROCEDURE `pa_03ge_02acci_05mod_02`( IN comunidad INT, IN USER INT,  
- IN $a VARCHAR(50), 
- IN $b VARCHAR(50), 
- IN $c VARCHAR(50), 
- IN $d VARCHAR(50), 
- IN $e VARCHAR(50), 
- IN $f VARCHAR(50), 
- IN $g VARCHAR(50), 
- IN $h VARCHAR(50), 
- IN $j VARCHAR(50), 
- IN $k datetime, 
- IN $l datetime, 
- IN $m VARCHAR(50)) 
-   
- #declaro VARIABLES post modificadas 
-     DECLARE $a2 VARCHAR(50); 
-     DECLARE $b2 VARCHAR(50); 
-     DECLARE $c2 VARCHAR(50); 
-     DECLARE $d2 VARCHAR(50);     
-     DECLARE $e2 VARCHAR(50); 
-     DECLARE $f2 VARCHAR(50); 
-     DECLARE $g2 VARCHAR(50); 
-     DECLARE $h2 VARCHAR(50); 
-     DECLARE $j2 VARCHAR(50); 
-     DECLARE $k2 datetime; 
-     DECLARE $l2 datetime; 
-     DECLARE $m2 VARCHAR(50); 
-   
- #declaro el cursor 
- DECLARE cur1 CURSOR FOR  
-   
- SELECT 080_acciones.id, 080_acciones.prioridad_id, 080_acciones.status_id,082_acc_status.STATUS, 080_acciones.contrato_id, 
-     objetivo, origen, descripcion, 080_acciones.creador, 
-     DATEDIFF( NOW( ) , fecha_fin ) AS retraso,080_acciones.fecha_creacion,080_acciones.fecha_inicio,080_acciones.fecha_fin,080_acciones.fecha_modif, 
-     080_acciones.fecha_cierre,  080_acciones.modificador,080_acciones.ult_modif,080_acciones.cerrador,   030_comunidades.codigo, 030_comunidades.poblacion 
-     FROM fincas4.080_acciones 
-     LEFT JOIN fincas4.082_acc_status ON (080_acciones.status_id=082_acc_status.valor) 
-     LEFT JOIN fincas4.001_contratos ON (080_acciones.contrato_id=001_contratos.id), 
-     general2.050_auth 
-     LEFT JOIN general2.030_comunidades ON (050_auth.contrato_id=030_comunidades.id) 
-     WHERE 001_contratos.STATUS=1 AND 080_acciones.contrato_id=050_auth.contrato_id  
-   
- AND 080_acciones.contrato_id=comunidad  AND 050_auth.user_id=USER 
- AND   080_acciones.status_id LIKE $a2 
- AND   080_acciones.prioridad_id LIKE $b2 
- AND   080_acciones.objetivo LIKE $c2 
- AND   080_acciones.origen LIKE $d2 
- AND   080_acciones.fecha_inicio >= $e2 
- AND   080_acciones.fecha_inicio <= $f2 
- AND   080_acciones.fecha_fin >= $g2 
- AND   080_acciones.fecha_fin <= $h2 
- AND   080_acciones.creador LIKE $j2 
- AND   080_acciones.fecha_creacion >= $k2 
- AND   080_acciones.fecha_creacion <= $l2 
- AND   080_acciones.cerrador LIKE $m2 
- ORDER BY id DESC; 
-   
-   
- #condicionales de post 
- IF $a!='555' THEN SET  $a2=$a; ELSE SET $a2='2';END IF; 
- IF $b!='555' THEN SET  $b2=$b; ELSE SET $b2='_%';END IF; 
- IF $c!='555' THEN SET  $c2=$c; ELSE SET $c2='_%';END IF; 
- IF $d!='555' THEN SET  $d2=$d; ELSE SET $d2='_%';END IF; 
- IF $e!='555' THEN SET  $e2=$e; ELSE SET $e2='_%';END IF; 
- IF $f!='555' THEN SET  $f2=$f; ELSE SET $f2='_%';END IF; 
- IF $g!='555' THEN SET  $g2=$g; ELSE SET $g2='_%';END IF; 
- IF $h!='555' THEN SET  $h2=$h; ELSE SET $h2='_%';END IF; 
- IF $j!='555' THEN SET  $j2=$j; ELSE SET $j2='_%';END IF; 
- IF $k!='555' THEN SET  $k2=$k; ELSE SET $k2='_%';END IF; 
- IF $l!='555' THEN SET  $l2=$l; ELSE SET $l2='_%';END IF; 
-   
- IF ($m!='555') THEN SET  $m2=$m; ELSE SET $m2='_%';END IF;