回答:
はい、Oracleには一時テーブルがあります。ここへのリンクですAskTomのそれらを説明した記事は、とここで公式OracleがTABLEのマニュアルを作成することです。
ただし、Oracleでは、一時テーブルのデータのみが一時的です。テーブルは、他のセッションから見える通常のオブジェクトです。Oracleで一時テーブルを頻繁に作成および削除することは悪い習慣です。
CREATE GLOBAL TEMPORARY TABLE today_sales(order_id NUMBER)
ON COMMIT PRESERVE ROWS;
Oracle 18cは、単一セッションのメモリ内オブジェクトであるプライベート一時テーブルを追加しました。詳細については、ドキュメントを参照してください。プライベート一時テーブルは動的に作成および削除できます。
CREATE PRIVATE TEMPORARY TABLE ora$ptt_today_sales AS
SELECT * FROM orders WHERE order_date = SYSDATE;
一時テーブルは役立つ場合がありますが、一般的にOracleで悪用されます。多くの場合、インラインビューを使用して複数のステップを1つのSQLステートメントに結合することで回避できます。
CREATE TABLE AS SELECT
:LOB列を持つリモートテーブルSELECT
から直接選択することはできないため、リモートテーブルから選択します。私はリモートデータベースからレコードをコピーする手順を書いており、これが私の解決策でした。レコードをGTTに取り込み、そこから「実際の」テーブルにコピーします。
ほんのヒントです。Oracleの一時テーブルはSQL Serverとは異なります。すべてのセッションではなく、一度だけ作成してください。挿入した行はセッションでのみ表示され、セッションを終了すると(またはトランザクションの終了時、使用する "ON COMMIT"句に応じて)、自動的に削除されます(つまり、TRUNCATE
ではなくDROP
)。
DELETED
、DROP
ped ではありません。
CREATE GLOBAL TEMPORARY TABLE Table_name
(startdate DATE,
enddate DATE,
class CHAR(20))
ON COMMIT DELETE ROWS;