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

Oracle Sql:内部に一時テーブルを作成できるプロシージャ

    そもそもストアドプロシージャに一時テーブルを作成したいのはなぜですか?

    他のデータベース(SQL ServerやMySQLなど)に一時テーブルを作成することは比較的一般的です。 Oracleで同じことを行うことは非常にまれです。 Oracleで一時テーブルを作成したい場合は、ほとんどすべての場合に、より優れたアーキテクチャアプローチがあります。 DBAスタックには、一時テーブルの代替 そして、なぜそれらがOracleで一般的に必要とされないのか。

    プログラムで、動的SQLを使用してオブジェクトを作成できます

    CREATE OR REPLACE PROCEDURE dont_do_this
    AS
    BEGIN
      EXECUTE IMMEDIATE 'CREATE GLOBAL TEMPORARY TABLE a( id INTEGER )';
    END;
    

    ただし、一時テーブルを動的に作成する場合は、そのテーブルへのすべての参照も動的SQLを介して行う必要があります。単純なSELECTを記述することはできません。 テーブルに対するステートメント。また、Oracleの一時テーブルの定義はグローバルであるため、すべてのセッションで表示されます。 2つの異なるセッションが両方とも同じテーブルを作成しようとしている場合、2番目のセッションはエラーになります。異なるセッションでテーブルの定義が異なると予想される場合は、さらに多くの問題が発生します。



    1. mysql列の単語を見つけて置き換える方法は?

    2. djangoモデルフィールドでvarchar(N)の代わりにchar(N)データ型を適用する方法

    3. 式インデックスの検索

    4. SQL Server IFとIIF():違いは何ですか?