Hi Mark,
The temp table should take care of the number of records. The incentives we're report against generally only run for a couple of months and the data is summarised by consultant anyway. I suspect the largest set would be maybe 300-400 rows.
In addition, another parameter defines how many rows we return. Once we've sorted the data, we'll only return the top x.
I realise this makes it all the more important to use an Order By clause, but I really don't want to run a dynamic select to get my final set.