2016-10-25 4 views
2

Oracle EBSコンカレント・プログラムによってコールされるPL/SQLプロシージャ内にコミットを入れることをお薦めしますか?私たちはもうそれをロールバックすることはできません、プログラムがコミットした後に、例外が発生した場合Oracle EBSコンカレント・プログラムにコミットすることをお薦めしますか?

  1. :私は常に次のような理由のためのプログラム内のコミットを置くために、その悪い習慣を信じていました。
  2. 、我々は入れてはいけません暗黙的なコミットん呼び出しアプリケーション(この場合は、EBS)のOracleワークフローの場合と同様に
  3. をしてみましょうが、それは の「ロールバック」機能を破壊するようWFパッケージ内にコミットワークフロー。

しかし、私は、Oracle EBS開発者は、単一のコンカレント・プログラム内のコミットを入れて見続けます。これについての考えは?

ありがとうございます!

答えて

1

あなたは正しいことを心配しないでください。 データベース開発者は、生産中に焼き付くまで多くのことを認識していません。 コード内でのCOMMITの回避は、システム・ロジック全体を壊すことなく、このコードを他のコード・ユニットで使用できるようにすることです。 ロールバックは例外に関するだけでなく、データベースを破壊することなく、ユーザーが対話型プログラム内のアクションを取り消す自由についても示します。

ここでは、1人の開発者(unit_2の開発者)が自由にCOMMITを使用する場合の例を示します。

create table t (i int); 

create or replace procedure unit_1 as begin insert into t(i) values (1); end; 
/
create or replace procedure unit_2 as begin insert into t(i) values (2); commit; end; 
/
create or replace procedure unit_3 as begin insert into t(i) values (3); end; 
/
create or replace procedure unit_4 as begin insert into t(i) values (4); end; 
/

create or replace procedure all_units as begin delete t;unit_1;unit_2;unit_3;unit_4; end; 
/

exec all_units; 

select * from t; 

  I 
---------- 
     1 
     2 
     3 
     4 

私は右のそれをやって聞いて喜ん
set transaction t; exec all_units; rollback; 


select * from t; 

  I 
---------- 
     1 
     2 
+0

。次に問題となるのは、他の開発者にその悪い習慣を伝える方法です。 :Dありがとう! :) –

関連する問題