Po pierwsze, lokalne tabele tymczasowe utworzone w ramach procedury są usuwane po zakończeniu procedury. Z BOL na temat tworzenia tabeli :
Jeśli twój kod dostępu do danych prawidłowo otwiera połączenie, wywołuje procedurę składowaną, a następnie zamyka połączenie, tabela tymczasowa jest tworzona w procedurze, która jest skutecznie niszczona.
Mówię „skutecznie”, aby poruszyć inny punkt. Nie zalecałbym upuszczania tabeli tymczasowej na końcu procedury, chociaż dodałbym kontrolę tuż przed utworzeniem tabeli tymczasowej i upuściłem ją, jeśli istnieje (np. if object_id('tempdb..#Foo') is not null
). Argumentem przeciwko porzuceniu tabeli tymczasowej na końcu jest to, że wywołując instrukcję Drop, zmuszasz SQL Server do zużywania zasobów w celu zniszczenia tabeli w tym miejscu, podczas gdy czekasz na zakończenie procedury. Jeśli zamiast tego wyjdziesz poza zakres, twoja procedura natychmiast się zakończy i pozwolisz SQL Serverowi zniszczyć tabelę w wybranym przez siebie czasie.