sql >> データベース >  >> RDS >> Oracle

グローバル一時テーブル-SQLServerとOracle

    Oracleの一時テーブルは、セッションローカルの一時データを保持する永続オブジェクトです。 SQLServerの一時テーブルは一時オブジェクトです。

    1. SQL Serverでは、グローバル一時テーブルはすべてのセッションに表示されるデータを保持します。 「グローバル一時テーブルは、作成後にすべてのユーザーとすべての接続に表示されます。」 http://msdn.microsoft.com/en-us/library/ms186986 .aspx
    2. グローバル一時テーブルは、無期限に存続しない一時的なオブジェクトであり、使用する前に作成する必要がある場合があります。 「グローバル一時テーブルは...テーブルを参照しているすべてのユーザーが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: )
    


    1. PostgresqlDBバックアップ理想的な方法

    2. 親アセンブリで販売されたコンポーネントの数量を計算するSQLクエリを作成するにはどうすればよいですか? (Postgres 11 /再帰CTE?)

    3. PHPで2つのテーブルを結合する

    4. メモリ内にフォームを生成する方法を学ぶ(はい、あなたはその権利を聞いた)