Я сомневаюсь, что кому-то это понадобится, но я понял, все, что мне нужно было сделать, это как бы зеркало первой части, в итоге выглядело так:
CREATE DEFINER=`root`@`localhost` PROCEDURE `addUser`(IN p_Name varchar(100), IN p_Passw varchar(200),
IN p_Tipo varchar(3), IN p_Email varchar(200))
BEGIN
SET @sql := CONCAT('CREATE USER \'', p_Name, '\'@\'localhost\'', ' IDENTIFIED BY \'', p_Passw, '\'');
PREPARE stmt FROM @sql;
EXECUTE stmt;
INSERT INTO Utilizador (EmailUtilizador, NomeUtilizador,TipoUtilizador) VALUES (p_Email,p_Name,p_Tipo);
CASE
WHEN p_Tipo = 'ADM' THEN SET @perm := concat('GRANT appadmin TO \'',p_Name,'\'@\'localhost\'');
WHEN p_Tipo = 'SEG' THEN SET @perm := concat('GRANT seguranca TO \'',p_Name,'\'@\'localhost\'');
WHEN p_Tipo = 'CSG' THEN SET @perm := concat('GRANT chefeseguranca TO \'',p_Name,'\'@\'localhost\'');
WHEN p_Tipo = 'DIR' THEN SET @perm := concat('GRANT diretor TO \'',p_Name,'\'@\'localhost\'');
WHEN p_Tipo = 'SEN' THEN SET @perm := concat('GRANT sensor TO \'',p_Name,'\'@\'localhost\'');
END CASE;
PREPARE grnt FROM @perm;
EXECUTE grnt;
END