Temporära tabeller i Oracle är permanenta objekt som innehåller temporär data som är sessionslokal. Temporära tabeller i SQL Server är tillfälliga objekt.
- I SQL Server innehåller en global temptabell data som är synlig för alla sessioner. "Globala temporära tabeller är synliga för alla användare och alla anslutningar efter att de har skapats." http://msdn.microsoft.com/en-us/library/ms186986 .aspx
- Globala temporära tabeller är fortfarande tillfälliga objekt som inte finns kvar på obestämd tid och kan behöva skapas innan användning. "Globala temporära tabeller är ... raderas när alla användare som refererar till tabellen kopplar bort från instansen av SQL Server." http://msdn.microsoft.com/en-us/library/ms186986 .aspx
Jag tycker att en lokal temporär tabell, eller tabellvariabel, är närmast att vara densamma som Oracles globala temptabell, den stora skillnaden är att du måste skapa den varje gång.
Vanligtvis, i ett fall som ditt, steg 3, lägg till rader i temptabellen, görs genom att göra en select ... into #temp_table_name ....
(motsvarande Oracle create table ... as select ...
) http://msdn.microsoft.com/en-us/library/ ms188029.aspx
Du kan inte heller göra följande i en lagrad proc:(pseudokod.)
begin proc
call another proc to create local temp table.
use temp table
end proc
Lokala temporära tabeller förstörs när de återgår från den lagrade proceduren som skapade dem.
Uppdatering 2014-10-14: Beteendet för lokala temporära tabeller är annorlunda i Parallel Data Warehousev-versionen av SQL Server. Tillfälliga tabeller släpps inte när de avslutas från den lagrade proceduren som skapade dem, utan fortsätter att existera under resten av sessionen. Detta beteende observerades på:
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: )