Oracleの一時テーブルは、セッションローカルの一時データを保持する永続オブジェクトです。 SQLServerの一時テーブルは一時オブジェクトです。
- SQL Serverでは、グローバル一時テーブルはすべてのセッションに表示されるデータを保持します。 「グローバル一時テーブルは、作成後にすべてのユーザーとすべての接続に表示されます。」 http://msdn.microsoft.com/en-us/library/ms186986 .aspx
- グローバル一時テーブルは、無期限に存続しない一時的なオブジェクトであり、使用する前に作成する必要がある場合があります。 「グローバル一時テーブルは...テーブルを参照しているすべてのユーザーがSQLServerのインスタンスから切断されると削除されます。」 http://msdn.microsoft.com/en-us/library/ms186986 .aspx
ローカル一時テーブルまたはテーブル変数は、Oracleのグローバル一時テーブルと同じであることに最も近いことがわかりました。大きな違いは、毎回作成する必要があることです。
通常、あなたのような場合、ステップ3、一時テーブルに行を追加するには、select ... into #temp_table_name ....
を実行します。 (Oracle create table ... as select ...
と同等です ) http://msdn.microsoft.com/en-us/library/ ms188029.aspx
また、ストアドプロシージャで次のことを行うことはできません:(擬似コード)
begin proc
call another proc to create local temp table.
use temp table
end proc
ローカル一時テーブルは、それらを作成したストアドプロシージャから戻るときに破棄されます。
更新2014-10-14: ローカル一時テーブルの動作は、SQLServerのParallelDataWarehousevバージョンでは異なります。一時テーブルは、それらを作成したストアドプロシージャの終了時に削除されず、代わりにセッションの残りの間存在し続けます。この動作は次の場所で観察されました:
select @@version
Microsoft SQL Server 2012 - 10.0.5108.1 (X64) Jun 24 2014 20:17:02 Copyright (c) Microsoft Corporation Parallel Data Warehouse (64-bit) on Windows NT 6.2 <X64> (Build 9200: )