Risposte:
Sì, Oracle ha tabelle temporanee. Ecco un collegamento a un articolo di AskTom che li descrive ed ecco la documentazione ufficiale di Oracle CREATE TABLE.
Tuttavia, in Oracle, solo i dati in una tabella temporanea sono temporanei. La tabella è un oggetto normale visibile ad altre sessioni. È una cattiva pratica creare e rilasciare frequentemente tabelle temporanee in Oracle.
CREATE GLOBAL TEMPORARY TABLE today_sales(order_id NUMBER)
ON COMMIT PRESERVE ROWS;
Oracle 18c ha aggiunto tabelle temporanee private, che sono oggetti in memoria a sessione singola. Consulta la documentazione per maggiori dettagli. Le tabelle temporanee private possono essere create e rilasciate dinamicamente.
CREATE PRIVATE TEMPORARY TABLE ora$ptt_today_sales AS
SELECT * FROM orders WHERE order_date = SYSDATE;
Le tabelle temporanee possono essere utili ma vengono comunemente utilizzate in modo improprio in Oracle. Spesso possono essere evitati combinando più passaggi in una singola istruzione SQL utilizzando le visualizzazioni inline.
CREATE TABLE AS SELECT
: selezionare da tabelle remote con colonne LOB, poiché non è possibile direttamente SELECT
da esse. Sto scrivendo una procedura per copiare i record da un database remoto, e questa era la mia soluzione: portare i record in un GTT, e poi copiarli da quello alla tabella "reale".
Solo un suggerimento .. Le tabelle temporanee in Oracle sono diverse da SQL Server. Lo crei UNA VOLTA e solo UNA VOLTA, non ogni sessione. Le righe che inserisci sono visibili solo alla tua sessione e vengono automaticamente cancellate (cioè, TRUNCATE
non DROP
) quando termini la sessione (o alla fine della transazione, a seconda della clausola "ON COMMIT" che utilizzi).
DELETED
, non DROP
ped.
CREATE GLOBAL TEMPORARY TABLE Table_name
(startdate DATE,
enddate DATE,
class CHAR(20))
ON COMMIT DELETE ROWS;
ON COMMIT DELETE ROWS
significa che verranno scartati prima, se effettui il commit in modo incrementale durante una sessione.