Di Oracle, Anda sangat jarang membutuhkan tabel sementara. Anda biasanya memerlukan tabel sementara di database lain karena database tersebut tidak menerapkan konsistensi baca multi-versi dan ada kemungkinan seseorang yang membaca data dari tabel akan diblokir saat prosedur Anda berjalan atau prosedur Anda akan melakukan pembacaan kotor jika tidak 't menyimpan data ke struktur yang terpisah. Anda tidak memerlukan tabel sementara global di Oracle karena salah satu dari alasan ini karena pembaca tidak memblokir penulis dan pembacaan kotor tidak dimungkinkan.
Jika Anda hanya membutuhkan tempat sementara untuk menyimpan data saat Anda melakukan perhitungan PL/SQL, koleksi PL/SQL lebih umum digunakan daripada tabel sementara di Oracle. Dengan cara ini, Anda tidak mendorong data bolak-balik dari mesin PL/SQL ke mesin SQL dan kembali ke mesin PL/SQL.
CREATE PROCEDURE do_some_processing
AS
TYPE emp_collection_typ IS TABLE OF emp%rowtype;
l_emps emp_collection_type;
CURSOR emp_cur
IS SELECT *
FROM emp;
BEGIN
OPEN emp_cur;
LOOP
FETCH emp_cur
BULK COLLECT INTO l_emps
LIMIT 100;
EXIT WHEN l_emps.count = 0;
FOR i IN 1 .. l_emps.count
LOOP
<<do some complicated processing>>
END LOOP;
END LOOP;
END;
Anda dapat membuat tabel sementara global (di luar prosedur) dan menggunakan tabel sementara global di dalam prosedur Anda sama seperti Anda menggunakan tabel lainnya. Jadi Anda dapat terus menggunakan tabel sementara jika diinginkan. Tapi saya bisa menghitung dengan satu tangan berapa kali saya benar-benar membutuhkan tabel sementara di Oracle.