halt on compilation error in a sqlplus script

前端 未结 1 1985
时光取名叫无心
时光取名叫无心 2020-12-22 07:09

I am deploying pl/sql code using several sql files that are called with @@file. If a package got a compilation error the script continues to the end.

Is

相关标签:
1条回答
  • 2020-12-22 07:35

    No native sql*plus way I'm aware of. Only workarounds. Like this:

    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
    
    0 讨论(0)
提交回复
热议问题