Trong Oracle, bạn rất hiếm khi cần một bảng tạm thời ngay từ đầu. Bạn thường cần các bảng tạm thời trong các cơ sở dữ liệu khác vì những cơ sở dữ liệu đó không triển khai tính nhất quán đọc nhiều phiên bản và có khả năng ai đó đọc dữ liệu từ bảng sẽ bị chặn trong khi thủ tục của bạn chạy hoặc thủ tục của bạn sẽ đọc sai nếu không. không lưu dữ liệu vào một cấu trúc riêng biệt. Bạn không cần các bảng tạm thời toàn cục trong Oracle vì một trong hai lý do này vì trình đọc không chặn người viết và không thể đọc bẩn.
Nếu bạn chỉ cần một nơi tạm thời để lưu trữ dữ liệu trong khi thực hiện các phép tính PL / SQL, các tập hợp PL / SQL thường được sử dụng hơn các bảng tạm thời trong Oracle. Bằng cách này, bạn sẽ không đẩy dữ liệu qua lại từ công cụ PL / SQL sang công cụ SQL và trở lại công cụ 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;
Bạn có thể tạo một bảng tạm thời chung (bên ngoài thủ tục) và sử dụng bảng tạm thời chung bên trong thủ tục của bạn giống như cách bạn sử dụng bất kỳ bảng nào khác. Vì vậy, bạn có thể tiếp tục sử dụng các bảng tạm thời nếu bạn muốn. Nhưng tôi có thể đếm trên một mặt số lần tôi thực sự cần một bảng tạm thời trong Oracle.