There may be a million details on this, but I'd start with two general concepts.
For emptying the table in order to reload it, TRUNCATE is your best bet. There are dependencies & gotchas around using it of course. However, it'll get the job done in most instances.
As for loading the table, I'd modify your procedure so that you use INSERT...SELECT syntax. That's the easiest way to get it done. That way, the existing query and the work you've done building are not in any way tossed aside.