Antworten:
Ja, Oracle hat temporäre Tabellen. Hier ist ein Link zu einem AskTom- Artikel, der sie beschreibt, und hier ist die offizielle Oracle CREATE TABLE-Dokumentation.
In Oracle sind jedoch nur die Daten in einer temporären Tabelle temporär. Die Tabelle ist ein reguläres Objekt, das für andere Sitzungen sichtbar ist. Es wird empfohlen, häufig temporäre Tabellen in Oracle zu erstellen und zu löschen.
CREATE GLOBAL TEMPORARY TABLE today_sales(order_id NUMBER)
ON COMMIT PRESERVE ROWS;
Oracle 18c fügte private temporäre Tabellen hinzu, bei denen es sich um speicherinterne Objekte für eine Sitzung handelt. Weitere Informationen finden Sie in der Dokumentation . Private temporäre Tabellen können dynamisch erstellt und gelöscht werden.
CREATE PRIVATE TEMPORARY TABLE ora$ptt_today_sales AS
SELECT * FROM orders WHERE order_date = SYSDATE;
Temporäre Tabellen können nützlich sein, werden jedoch in Oracle häufig missbraucht. Sie können häufig vermieden werden, indem mehrere Schritte mithilfe von Inline-Ansichten zu einer einzigen SQL-Anweisung kombiniert werden.
CREATE TABLE AS SELECT
: Wählen Sie aus Remote-Tabellen mit LOB-Spalten aus, da Sie nicht direkt SELECT
daraus auswählen können. Ich schreibe eine Prozedur zum Kopieren von Datensätzen aus einer entfernten Datenbank, und dies war meine Lösung: Bringen Sie die Datensätze in eine GTT und kopieren Sie sie dann in die "echte" Tabelle.
Nur ein Tipp. Temporäre Tabellen in Oracle unterscheiden sich von SQL Server. Sie erstellen es EINMAL und nur EINMAL, nicht jede Sitzung. Die Zeilen, die Sie einfügen, sind nur für Ihre Sitzung sichtbar und werden automatisch gelöscht (dh TRUNCATE
nicht DROP
), wenn Sie Ihre Sitzung beenden (oder die Transaktion beenden, je nachdem, welche "ON COMMIT" -Klausel Sie verwenden).
DELETED
, nicht DROP
ped.
CREATE GLOBAL TEMPORARY TABLE Table_name
(startdate DATE,
enddate DATE,
class CHAR(20))
ON COMMIT DELETE ROWS;
ON COMMIT DELETE ROWS
bedeutet, dass sie früher verworfen werden, wenn Sie während einer Sitzung schrittweise Festschreibungen vornehmen.