Midlertidige tabeller i Oracle er permanente objekter, der indeholder midlertidige data, der er sessionslokale. Midlertidige tabeller i SQL Server er midlertidige objekter.
- I SQL Server indeholder en global midlertidig tabel data, der er synlige for alle sessioner. "Globale midlertidige tabeller er synlige for enhver bruger og enhver forbindelse, efter at de er oprettet." http://msdn.microsoft.com/en-us/library/ms186986 .aspx
- Globale midlertidige tabeller er stadig midlertidige objekter, der ikke eksisterer i det uendelige og skal muligvis oprettes før brug. "Globale midlertidige tabeller er ... slettes, når alle brugere, der refererer til tabellen, afbryder forbindelsen til forekomsten af SQL Server." http://msdn.microsoft.com/en-us/library/ms186986 .aspx
Jeg synes, at en lokal midlertidig tabel, eller tabelvariabel, er tættest på at være den samme som Oracles globale temp-tabel, den store forskel er, at du skal oprette den hver gang.
Normalt, i et tilfælde som dit, vil trin 3, tilføje rækker til den midlertidige tabel, ske ved at foretage en select ... into #temp_table_name ....
(svarende til Oracle create table ... as select ...
) http://msdn.microsoft.com/en-us/library/ ms188029.aspx
Du kan heller ikke gøre følgende i en lagret proc:(pseudokode.)
begin proc
call another proc to create local temp table.
use temp table
end proc
Lokale midlertidige tabeller bliver ødelagt, når de vender tilbage fra den lagrede procedure, der oprettede dem.
Opdatering 2014-10-14: Opførselen af lokale midlertidige tabeller er anderledes i Parallel Data Warehousev-versionen af SQL Server. Midlertidige tabeller slettes ikke ved afslutning af den lagrede procedure, der oprettede dem, og fortsætter i stedet med at eksistere resten af sessionen. Denne adfærd observeret 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: )