sql >> Database >  >> RDS >> Oracle

SQL Server / Oracle:tijdelijke privétabellen

Zoals je hebt ontdekt, zijn de tijdelijke tabellen van SQL Server en Oracle fundamenteel verschillend.

In Oracle zijn globale tijdelijke tabellen permanente objecten die tijdelijke sessiespecifieke (of transactiespecifieke) gegevens opslaan.

In SQL Server zijn tijdelijke tabellen tijdelijke objecten die tijdelijke gegevens opslaan, waarbij #temp_tables gegevens opslaat die lokaal zijn voor een sessie en ##temp_tables gegevens opslaat die globaal zijn. (Ik heb nooit globale tijdelijke tabellen van SQL Server nodig gehad en weet niet welk probleem ze oplossen.) Als de #temp_table is gemaakt in een opgeslagen procedure, wordt deze verwijderd wanneer de opgeslagen procedure wordt afgesloten. Anders wordt het verwijderd wanneer de sessie wordt gesloten.

En nee, er is echt geen manier om SQL Server Oracle te laten nabootsen. U kunt een normale tabel gebruiken met een extra kolom waarin een sessie-ID is opgeslagen. Maar je zou niet de voordelen van tijdelijke tabellen krijgen met betrekking tot minder logging. U moet de tijdelijke gegevens handmatig verwijderen. En omgaan met het opruimen van sessies die voortijdig zijn gestopt.

BEWERKEN: Een ander verschil tussen Oracle en SQL Server is dat met SQL Server DDL in een transactie met andere instructies kan worden verpakt. Dus als u een tijdelijke tabel moet gebruiken als onderdeel van een grotere transactie, kunt u met de create table #table_name... statement zal niet impliciet de huidige transactie vastleggen zoals een create table verklaring zou in Oracle.



  1. Wis de cache op het 2e niveau van de slaapstand na handmatige DB-update

  2. Waarden in mysql vergelijken op basis van tijdstempel en trends identificeren

  3. CLEAR SCREEN - Oracle SQL Developer snelkoppeling?

  4. Waarom is het verbinden met de MySQL-server zo traag?