で呼び出されるいくつかのSQLファイルを使用してpl/sqlコードをデプロイしています@@file
。パッケージでコンパイルエラーが発生した場合、スクリプトは最後まで続行されます。
すべてのコンパイルエラーを停止する方法はありますか?
試しWHENEVER SQLERROR EXIT SQL.SQLCODE
ましたが、スクリプトは続行されます。
で呼び出されるいくつかのSQLファイルを使用してpl/sqlコードをデプロイしています@@file
。パッケージでコンパイルエラーが発生した場合、スクリプトは最後まで続行されます。
すべてのコンパイルエラーを停止する方法はありますか?
試しWHENEVER SQLERROR EXIT SQL.SQLCODE
ましたが、スクリプトは続行されます。
私が知っているネイティブの sql*plus の方法はありません。回避策のみ。このような:
20:42:50 TEST@oars_sandbox> get scr
1 whenever sqlerror exit rollback
2 create or replace procedure my_failed_proc as
3 i number;
4 begin
5 select 1 into i from me_iz_not_exist;
6 end;
7 /
8 @check my_failed_proc
9 create or replace procedure my_correct_proc as
10 i number;
11 begin
12 select 1 into i from dual;
13 end;
14 /
15* @check my_correct_proc
20:42:57 16 .
20:42:59 TEST@oars_sandbox> get check
1 declare
2 l_status varchar2(100);
3 begin
4 select status into l_status
5 from all_objects where object_name = upper('&1');
6 if l_status = 'INVALID' then
7 raise_application_error(-20000, 'Object &1 is invalid!');
8 end if;
9* end;
20:43:02 10 .
20:43:04 TEST@oars_sandbox> @scr
Warning: Procedure created with compilation errors.
Elapsed: 00:00:00.05
declare
*
ERROR at line 1:
ORA-20000: Object my_failed_proc is invalid!
ORA-06512: at line 8
Disconnected from Oracle Database 11g Express Edition Release 11.2.0.2.0 - Production