call spMenu_Asignar('0304',1,1,'DEL')
call spMenu_Asignar('02',1,1,'DEL');

DROP PROCEDURE IF EXISTS spMenu_Asignar;
CREATE PROCEDURE spMenu_Asignar(
	varCodigo varchar(10),
	varUsuario int,
	varUsuarioCrea int,
	varOpcion varchar(8)
)
BEGIN
	declare varTamano int;
	declare v int;
	declare varMenu varchar(10);
	set varTamano = length(varCodigo);
	set v = 2;
	if varOpcion = 'NEW' then
		/*Agreamos padres*/
		WHILE v <= varTamano DO
			set varMenu = substring(varCodigo,1,v);
			delete from _sind_menu_usuario 
			where id_menu= varMenu and id_usuario = varUsuario; 
			insert into _sind_menu_usuario (id_menu, id_usuario, _registrado, 
			_modificado, _id_usuario) values (varMenu,varUsuario, NOW(),NOW(), varUsuarioCrea);
			SET v = v + 2; 
		END WHILE;
		/*Agremos hijos*/
		delete from _sind_menu_usuario where id_usuario = varUsuario 
		and id_menu like concat(varCodigo,'%') and id_menu <> varCodigo;
		insert into _sind_menu_usuario (id_menu, id_usuario, _registrado, _modificado, _id_usuario)
		select id_menu, varUsuario, NOW(), NOW(), varUsuarioCrea from _sind_menu
		where id_menu like concat(varCodigo,'%') and id_menu <> varCodigo;
	else
		delete from _sind_menu_usuario where id_usuario = varUsuario and id_menu like concat(varCodigo,'%');
	end if;
END