Should I load the data into Temp table or keep calling it from the normal table?
If the volume of data you're retrieving is large - roughly, millions of narrow rows, or hundreds of thousands of wide rows, or tens of thousands of rows with large objects - you should probably cache the data in a temp table and reuse that.  If you're performing significant processing to get the data - such as a table scan - you should probably cache it.  Aside from speed, I can think of a couple other reasons to dump the data to a temp table:


It minimizes the length of time the source table is locked (this can be very important).
It gives you the opportunity to rename fields or use more restrictive data types (such as NOT NULL constraints) that only apply to your data set.
It gives you a chance to add calculated fields or indexes which are not present in the original.


...and against:


It entails a little extra development work.
It requires additional space, in memory, on disk, or both.


That said, this may be premature optimization; how long does your sproc take to run?