2017-06-19 5 views
0

私が行う必要があるのは次のとおりです。 一時表を定義し、データで埋めるプロシージャを作成してから、その表から*を選択してデータを処理します。PL/SQLとエンティティ・フレームワークは、動的挿入プロシージャとEFからのコールを作成します。

これは私がこれまで持っているものです:表を作成し、私がしなければ

create global temporary table tempzzo 
    (ID_UTENTE NUMBER NOT NULL, FIELD1 VARCHAR2(50), FIELD2 VARCHAR(5), FIELD3 VARCHAR2(30)) 

Create or replace procedure SCHEMA.TEST_P 
is 
    stmt varchar2(1000); 
begin 
    stmt := 'insert into tempzzo SELECT 123 ,S.FIELD1, S.FIELD2, S.FIELD3 from GEMINI.TABLEEXAMPLE S where rownum < 10;'; 
    execute immediate stmt; 
    COMMIT; 
end; 

けどを埋めるため

コード「tempzzoから*を選択し、」私はテーブルを空にします。それは何ですか??? プロシージャにコミットしようとしましたが、何も変わりません。

誰かがdbcontextを使ってエンティティフレームワークからもそれを呼び出す方法を私に示すことができたらうれしいです。

おかげ

答えて

0

はGTTを作成する文の最後にON COMMIT PRESERVE ROWSを追加します。コミット時に行が削除されることはありません。代わりに、セッションが終了すると削除されます。

+0

ストアドプロシージャの実行後にそれらを保持する方法はありますか? これらのフィールドをEntity Framework(.NET)から取得する必要があり、ストアドプロシージャが実行の最初の部分になります。永続的にコミットし、後で手動で削除したい。 Iフィールドが動的で変更可能なため、新しいテーブルを定義することはできません。 –

+0

エンティティのフレームワークについてはわかりませんが、pl/sqlだけです。グローバルテンポラリテーブル(gtt)は、コミット時またはセッション終了時に行が削除されなければならないことを知っています。単一のセッションでgttでやってみたいことをすべて実行することは可能ですか?動的SQLを使用して定義された通常のテーブルを使用することを検討しましたか? –

関連する問題