You need to take an extra step to create the procedures described above. You cannot create base_proc until select_proc exists, and you cannot create select_proc until the temporary table exists. Here are the steps:
Create the temporary table outside the procedure. It can be empty; it just needs to exist and to have columns that are compatible with select_proc:
select * into #huge_result from ... where 1 = 2
Create the procedure select_proc, as shown above.
Drop #huge_result.
Create the procedure base_proc.