T-SQL Tempテーブルは、基本的にメモリ構造です。これらは、2つのRDBMSアーキテクチャの違いにより、Oracleではあまり明白ではないMSSQLの利点を提供します。したがって、移行を検討している場合は、Oracleにより適したアプローチを取ることをお勧めします。
ただし、状況は異なります。明らかに、2つのコードベースの同期を維持すると、作業が楽になります。
一時テーブルを使用するときに最も近いのは、PL/SQLコレクションです。具体的には、ネストされたテーブル。
これらを宣言する方法はいくつかあります。 1つ目は、SQLテンプレート(カーソル)を使用し、それに基づいてネストされたテーブルタイプを定義することです。 2つ目は、レコードタイプを宣言し、その上にネストされたテーブルを定義することです。いずれの場合も、コレクション変数に一括操作を入力します。
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;
/
カーソルを使用すると、基になるテーブルの変更が自動的に反映されるという利点があります。 RECORDには、基になるテーブルの変更に直面しても安定性があるという利点がありますが。それはあなたが望むものに依存します:)
PL/SQLリファレンスマニュアルには章全体があります。 詳細についてはこちらをご覧ください 。