masz tabele tymczasowe, ktore deklaruje sie rozpoczynajac od hash (#)
ale taka tabela istnieje fizycznie w bazie temp (do restartu serwera bazy danych), inne procedury (zapytania) rowniez moga z niej korzystac
sa jeszcze zmienne tabelaryczne (Table Variables), ktorych scope jest mniejszy, jak innych zmiennych, deklaruje je sie zaczynajac od at (@), przechowywane sa w pamieci
np. declare @myTab table (id int, name nvarchar(50))
mozemy na nich normalnie wykonywac wszystkie operacjie SCUD (http://en.wikipedia.org/wiki/Create,_read,_update_and_delete)
z tym przekazaniem jej dalej to sie zagalopowalem, bo zalezy jaki masz server 2005 czy 2008
w 2008 mozna http://blogs.techrepublic.com.com/datacenter/?p=168
w 2005 tego nie zrobisz, mozesz posilkowac sie np. xml, tworzysz z tabeli xml, przekazujesz go dalej, a pozniej dzialasz na nim uzywajac xquery
oczywiscie uzycie zmiennej tabelarycznej zalezy od tego ile danych chcesz tam wepchnac, poniewaz jest ona przetrzymywana w pamieci, to zbyt duza ilosc danych oraz brak statystyk, moga spowodowac ze uzycie tego typu tabeli spowolini zapytanie
ja staram sie uzywac tego typu zmiennych w przypadkcha kiedy mam na danym zbirze przeprowadzic jakis skomplikowane filtrowanie, ktorego wynik nastepnie uzywam w kilku podzapytaniach, zazwyczaj zapamietuje tylko jakies id przefiltrowanych obiektow
do tej pory notowalem wzrost wydajnosci vs tablica tymczasowa, ale jak napisalem moga byc przypadki kiedy nie bedzie to prawda