Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Globale temporäre Tabellen – SQL Server vs. Oracle

Temporäre Tabellen in Oracle sind permanente Objekte, die temporäre Daten enthalten, die sitzungslokal sind. Temporäre Tabellen in SQL Server sind temporäre Objekte.

  1. In SQL Server enthält eine globale temporäre Tabelle Daten, die für alle Sitzungen sichtbar sind. "Globale temporäre Tabellen sind für jeden Benutzer und jede Verbindung sichtbar, nachdem sie erstellt wurden." http://msdn.microsoft.com/en-us/library/ms186986 .aspx
  2. Globale temporäre Tabellen sind immer noch temporäre Objekte, die nicht unbegrenzt bestehen bleiben und möglicherweise vor der Verwendung erstellt werden müssen. "Globale temporäre Tabellen werden ... gelöscht, wenn alle Benutzer, die auf die Tabelle verweisen, die Verbindung zur Instanz von SQL Server trennen." http://msdn.microsoft.com/en-us/library/ms186986 .aspx

Ich finde, dass eine lokale temporäre Tabelle oder Tabellenvariable der globalen temporären Tabelle von Oracle am nächsten kommt, der große Unterschied besteht darin, dass Sie sie jedes Mal erstellen müssen.

Normalerweise würde in einem Fall wie Ihrem Schritt 3, Hinzufügen von Zeilen zur temporären Tabelle, durch Ausführen eines select ... into #temp_table_name .... erfolgen (entspricht Oracle create table ... as select ... ) http://msdn.microsoft.com/en-us/library/ ms188029.aspx

Außerdem können Sie in einer gespeicherten Prozedur Folgendes nicht tun:(Pseudocode.)

begin proc
   call another proc to create local temp table.
   use temp table
end proc

Lokale temporäre Tabellen werden zerstört, wenn sie von der gespeicherten Prozedur zurückkehren, die sie erstellt hat.

Aktualisierung 14.10.2014: Das Verhalten lokaler temporärer Tabellen unterscheidet sich in der Parallel Data Warehousev-Version von SQL Server. Temporäre Tabellen werden beim Beenden der gespeicherten Prozedur, die sie erstellt hat, nicht gelöscht und bleiben stattdessen für den Rest der Sitzung bestehen. Dieses Verhalten wurde beobachtet bei:

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: )