sql >> Database >  >> RDS >> Oracle

Wereldwijde tijdelijke tabellen - SQL Server versus Oracle

Tijdelijke tabellen in Oracle zijn permanente objecten die tijdelijke gegevens bevatten die lokaal in de sessie zijn. Tijdelijke tabellen in SQL Server zijn tijdelijke objecten.

  1. In SQL Server bevat een globale tijdelijke tabel gegevens die voor alle sessies zichtbaar zijn. "Globale tijdelijke tabellen zijn zichtbaar voor elke gebruiker en elke verbinding nadat ze zijn gemaakt." http://msdn.microsoft.com/en-us/library/ms186986 .aspx
  2. Globale tijdelijke tabellen zijn nog steeds tijdelijke objecten die niet voor onbepaalde tijd blijven bestaan ​​en die mogelijk vóór gebruik moeten worden gemaakt. "Globale tijdelijke tabellen worden ... worden verwijderd wanneer alle gebruikers die naar de tabel verwijzen, de verbinding met het exemplaar van SQL Server verbreken." http://msdn.microsoft.com/en-us/library/ms186986 .aspx

Ik vind dat een lokale tijdelijke tabel, of tabelvariabele, het dichtst in de buurt komt van de globale tijdelijke tabel van Oracle, het grote verschil is dat je deze elke keer moet maken.

Gewoonlijk, in een geval als het uwe, zou stap 3, rijen toevoegen aan de tijdelijke tabel, gedaan worden door een select ... into #temp_table_name .... (equivalent aan Oracle create table ... as select ... ) http://msdn.microsoft.com/en-us/library/ ms188029.aspx

U kunt ook het volgende niet doen in een opgeslagen proces:(pseudocode.)

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

Lokale tijdelijke tabellen worden vernietigd wanneer ze terugkeren van de opgeslagen procedure waarmee ze zijn gemaakt.

Update 2014-10-14: Het gedrag van lokale tijdelijke tabellen is anders in de Parallel Data Warehousev-versie van SQL Server. Tijdelijke tabellen worden niet verwijderd bij het afsluiten van de opgeslagen procedure waarmee ze zijn gemaakt, maar blijven bestaan ​​voor de rest van de sessie. Dit gedrag waargenomen op:

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


  1. Hoe maak ik een Django-model met ForeignKeys dat geen cascade-verwijderingen naar zijn kinderen uitvoert?

  2. Zijn er valkuilen / dingen die je moet weten bij het overstappen van MyISAM naar InnoDB

  3. Ruby 'pg' gem linkt naar verkeerde kopie van libpq.5.dylib (op OSX)

  4. Kon geen verbinding maken:verbinding met MySQL-server verbroken bij 'initieel communicatiepakket lezen', systeemfout:0