我正在使用几个用@@file
调用的sql文件来部署pl / sql代码。如果程序包出现编译错误,则脚本会一直持续到最后。
有没有办法停止每个编译错误?
我尝试WHENEVER SQLERROR EXIT SQL.SQLCODE
,但脚本仍在继续。
答案 0 :(得分:2)
没有本机sql *加上我知道的方式。只有解决方法。像这样:
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