Bảng T-SQL Temp về bản chất là cấu trúc bộ nhớ. Chúng cung cấp các lợi ích trong MSSQL mà ít rõ ràng hơn trong Oracle, vì sự khác biệt trong hai kiến trúc RDBMS. Vì vậy, nếu bạn đang muốn di chuyển thì bạn nên thực hiện một cách tiếp cận phù hợp hơn với Oracle.
Tuy nhiên, bạn có một tình huống khác và rõ ràng việc giữ đồng bộ hai cơ sở mã sẽ giúp cuộc sống của bạn dễ dàng hơn.
Điều gần nhất với các bảng tạm thời khi bạn muốn sử dụng chúng là các bộ sưu tập PL / SQL; cụ thể là các bảng lồng nhau.
Có một số cách để khai báo những điều này. Đầu tiên là sử dụng một mẫu SQL - một con trỏ - và xác định một kiểu bảng lồng nhau dựa trên nó. Thứ hai là khai báo một kiểu bản ghi và sau đó xác định một bảng lồng nhau trên đó. Trong cả hai trường hợp, hãy điền biến tập hợp bằng một thao tác hàng loạt.
declare
-- approach #1 - use a cursor
cursor c1 is
select *
from t23;
type nt1 is table of c1%rowtype;
recs1 nt1;
-- approach #1a - use a cursor with an explicit projection
cursor c1a is
select id, col_d, col_2
from t23;
type nt1a is table of c1a%rowtype;
recs1 nt1a;
-- approach #2 - use a PL/SQL record
type r2 is record (
my_id number
, some_date date
, a_string varchar2(30)
);
type nt2 is table of r2;
recs2 nt2;
begin
select *
bulk collect into recs1
from t23;
select id, col_d, col_2
bulk collect into recs2
from t23;
end;
/
Sử dụng con trỏ mang lại lợi thế là tự động phản ánh các thay đổi trong (các) bảng bên dưới. Mặc dù RECORD cung cấp lợi thế về sự ổn định khi đối mặt với những thay đổi trong (các) bảng bên dưới. Nó chỉ phụ thuộc vào những gì bạn muốn :)
Có cả một chương trong sổ tay tham khảo PL / SQL. Đọc để tìm hiểu thêm .