Временните таблици в Oracle са постоянни обекти, които съдържат временни данни, които са локални за сесията. Временните таблици в SQL Server са временни обекти.
- В SQL Server глобалната временна таблица съдържа данни, които са видими за всички сесии. „Глобалните временни таблици са видими за всеки потребител и всяка връзка, след като бъдат създадени.“ http://msdn.microsoft.com/en-us/library/ms186986 .aspx
- Глобалните временни таблици все още са временни обекти, които не съществуват безкрайно и може да се наложи да бъдат създадени преди употреба. „Глобалните временни таблици... се изтриват, когато всички потребители, които препращат към таблицата, прекъснат връзката с екземпляра на SQL Server.“ http://msdn.microsoft.com/en-us/library/ms186986 .aspx
Намирам, че локална временна таблица или променлива на таблица е най-близка до същата като глобалната временна таблица на Oracle, голямата разлика е, че трябва да я създавате всеки път.
Обикновено, в случай като вашия, стъпка 3, добавяне на редове към временна таблица, ще бъде направена чрез select ... into #temp_table_name ....
(еквивалентно на Oracle create table ... as select ...
) http://msdn.microsoft.com/en-us/library/ ms188029.aspx
Освен това не можете да правите следното в съхранена процедура:(псевдокод.)
begin proc
call another proc to create local temp table.
use temp table
end proc
Локалните временни таблици се унищожават при връщане от съхранената процедура, която ги е създала.
Актуализация 2014-10-14: Поведението на локалните временни таблици е различно във версията Parallel Data Warehousev на SQL Server. Временните таблици не се премахват при излизане от съхранената процедура, която ги е създала, и вместо това продължават да съществуват до края на сесията. Това поведение се наблюдава на:
select @@version
Microsoft SQL Server 2012 - 10.0.5108.1 (X64) Jun 24 2014 20:17:02 Copyright (c) Microsoft Corporation Parallel Data Warehouse (64-bit) on Windows NT 6.2 <X64> (Build 9200: )