The procedure becomes invalid because it references the table you drop and re-create.
I think you will need to change your procedure to use dynamic sql for all operations related to the table you drop.
You can use temp tables instead creating and dropping tables in your database. Even better depending on the amount of data you can use table variables. You can find information on both in Books On Line or search google.