Hoe maak je een tijdelijke tafel in een Oracle-database?

Ik wil graag een tijdelijke tabel maken in een Oracle-database

Iets als

Declare table @table (int id)

in SQL Server

en vul het vervolgens in met een Select-instructie

Is het mogelijk?

bedankt


Antwoord 1, Autoriteit 100%

Yep, Oracle heeft tijdelijke tafels. Hier is een link naar een Asktom Artikel beschrijft ze en Hier is het officiële Oracle Create Tabeldocumentatie.

In Oracle zijn alleen de -gegevens in een tijdelijke tabel tijdelijk. De tabel is een regelmatig object dat zichtbaar is voor andere sessies. Het is een slechte praktijk om de tijdelijke tafels in Oracle regelmatig te maken en neer te zetten.

CREATE GLOBAL TEMPORARY TABLE today_sales(order_id NUMBER)
ON COMMIT PRESERVE ROWS;

Oracle 18C voegde privé-tijdelijke tafels toe, die een single-sessie in geheugenobjecten zijn. Zie De documentatie voor meer details. Particuliere tijdelijke tafels kunnen dynamisch worden gemaakt en gevallen.

CREATE PRIVATE TEMPORARY TABLE ora$ptt_today_sales AS
SELECT * FROM orders WHERE order_date = SYSDATE;

Tijdelijke tabellen kunnen nuttig zijn, maar ze worden vaak misbruikt in Oracle. Ze kunnen vaak worden vermeden door meerdere stappen te combineren in een enkele SQL-instructie met behulp van inline views.


Antwoord 2, autoriteit 57%

Even een tip.. Tijdelijke tabellen in Oracle zijn anders dan SQL Server. U maakt het EENMAAL en slechts EENMAAL, niet elke sessie. De rijen die u erin invoegt, zijn alleen zichtbaar voor uw sessie en worden automatisch verwijderd (dwz TRUNCATE, niet DROP) wanneer u uw sessie beëindigt (of het einde van de transactie , afhankelijk van welke “ON COMMIT”-clausule u gebruikt).


Antwoord 3, autoriteit 25%

CREATE GLOBAL TEMPORARY TABLE Table_name
    (startdate DATE,
     enddate DATE,
     class CHAR(20))
  ON COMMIT DELETE ROWS;

Antwoord 4

CREATE TABLE table_temp_list_objects AS
SELECT o.owner, o.object_name FROM sys.all_objects o WHERE o.object_type ='TABLE';

Other episodes