Oracle データベースに一時テーブルを作成したい
何かのようなもの
Declare table @table (int id)
SQL サーバー内
そして、それにselectステートメントを入力します
出来ますか?
ありがとう
Oracle データベースに一時テーブルを作成したい
何かのようなもの
Declare table @table (int id)
SQL サーバー内
そして、それにselectステートメントを入力します
出来ますか?
ありがとう
はい、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ステートメントに結合することで回避できます。
ヒント..Oracleの一時テーブルはSQLServerとは異なります。すべてのセッションではなく、一度だけ作成します。挿入した行はセッションにのみ表示され、セッションを終了すると(または、使用する「ON COMMIT」句に応じてトランザクションを終了すると)、自動的に削除されます(つまり、TRUNCATE
ではありませんDROP
)。
CREATE GLOBAL TEMPORARY TABLE Table_name
(startdate DATE,
enddate DATE,
class CHAR(20))
ON COMMIT DELETE ROWS;