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

SQL Server / Oracle:プライベート一時テーブル

    ご存知のとおり、SQLServerとOracleの一時テーブルは根本的に異なります。

    Oracleでは、グローバル一時テーブルは、一時セッション固有(またはトランザクション固有)のデータを格納する永続オブジェクトです。

    SQL Serverでは、一時テーブルは一時データを格納する一時オブジェクトであり、#temp_tablesはセッションに対してローカルなデータを格納し、##temp_tablesはグローバルなデータを格納します。 (SQL Serverグローバル一時テーブルが必要になったことがなく、どのような問題が解決されるかわかりません。)#temp_tableがストアドプロシージャで作成された場合、ストアドプロシージャが終了すると削除されます。それ以外の場合は、セッションが閉じたときに削除されます。

    いいえ、SQLServerをOracleに模倣させる方法は実際にはありません。セッションIDを格納する追加の列を持つ通常のテーブルを使用できます。ただし、ロギングが少ないという点で一時テーブルの利点は得られません。一時データを手動で削除する必要があります。そして、途中で終了したセッションからのクリーンアップに対処します。

    編集: OracleとSQLServerのもう1つの違いは、SQLServerではDDLを他のステートメントとのトランザクションでラップできることです。したがって、より大きなトランザクションの一部として一時テーブルを使用する必要がある場合は、create table #table_name... ステートメントは、create tableのように現在のトランザクションを暗黙的にコミットしません ステートメントはOracleにあります。



    1. JSONbの日付:内部の実際の日付?

    2. Pythonを使用してOracleデータベースにバッチ挿入するにはどうすればよいですか?

    3. preRemove / postRemoveイベントを使用して、実行できるクエリと実行できないクエリを取得します

    4. 別のテーブルのランダムな一意の値を使用して列を更新する