The ECU has a 'limp mode' it goes into when it identifies certain problems, which sounds like has happened to your Pilot. It restricts the RPM range of the engine.
If you disconnect the battery it would erase the codes that caused the CEL and other warning lights to come on, and would probably take it out of the limp mode. But by erasing the codes your dealer wouldn't be able to diagnose the problem.
And even disconnecting the battery might not work, as the codes might just be set again as soon as you start the engine, putting you back into limp mode.