在我的应用程序中,oracle 程序当前是通过 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