В сценарии SQL после CREATE вы можете проверить ALL_ERRORS (или dba_errors) на наличие ошибки в этом объекте и, если ошибки существуют, EXECUTE IMMEDIATE, чтобы удалить его.
например.)
set serveroutput on
create or replace procedure meowner.testproc
as
begin
select;
end;
/
DECLARE
x number;
begin
select count(*) into x from all_errors
where owner = 'MEOWNER' and NAME='TESTPROC' ;
if x != 0 then
EXECUTE IMMEDIATE 'DROP PROCEDURE meowner.testproc';
dbms_output.put_line('Dropped due to compile error');
end if;
end;
/
PROCEDURE TESTPROC compiled
Errors: check compiler log
Dropped due to compile error
anonymous block completed