私のアプリケーションでは、オラクルの手順は現在unixスクリプトを介して呼び出されています.例外ブロックにエラーがある場合、次のような処理をしています:-
PROC_LOGS('<PROC_NAME>', <TABLE_NAME>, 'Exception','Exception occured - '||SQLERRM);
PROC_LOG はエントリをログ テーブルに挿入するだけですが、UNIX でもそのエラーをキャッチする必要があります (0 以外の値を返す) どこから呼び出されたので、残りのプロセスをその上で最適に終了できます。これを行う最善の方法は何ですか? ?
CREATE OR REPLACE....
...
DECLARE
....
BEGIN
..
...
EXCEPTION
WHEN OTHERS THEN
PROC_LOGS('<PROC_NAME>', <TABLE_NAME>, 'EXCEPTION','EXCEPTION OCCURED - '||SQLERRM);
END;
プロシージャを呼び出している Unix スクリプト部分
sqlplus <<-!
$US/$P@$I
set serveroutput on
@$SQL/execute_proc.sql $1 $2
execue_proc
このようなものが含まれています:-
define IN_1 = '&1';
define IN_2 = '&2';
spool $SQL/test_&&IN
declare
P_IN_TABLE_NAME varchar2(250) := '&&IN_TABLE_NAME';
P_IN_REGION varchar2(250) := '&&IN_REGION';
begin
PROC_UPDATE_CHARGE_FACT(P_IN_TABLE_NAME,P_IN_REGION);
end;
/
spool off