111

Oracle データベースに一時テーブルを作成したい

何かのようなもの

Declare table @table (int id)

SQL サーバー内

そして、それにselectステートメントを入力します

出来ますか?

ありがとう

4

4 に答える 4

152

はい、Oracleには一時テーブルがあります。これは、それらを説明するAskTomの記事へのリンクであり、オラクルの公式CREATETABLEドキュメントです。

ただし、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ステートメントに結合することで回避できます。

于 2010-04-19T23:13:10.573 に答える
81

ヒント..Oracleの一時テーブルはSQLServerとは異なります。すべてのセッションではなく、一度だけ作成します。挿入した行はセッションにのみ表示され、セッションを終了すると(または、使用する「ON COMMIT」句に応じてトランザクションを終了すると)、自動的に削除されます(つまり、TRUNCATEではありませんDROP)。

于 2010-04-19T23:34:51.177 に答える
39
CREATE GLOBAL TEMPORARY TABLE Table_name
    (startdate DATE,
     enddate DATE,
     class CHAR(20))
  ON COMMIT DELETE ROWS;
于 2013-02-01T09:32:36.657 に答える