Запретить Oracle создавать ошибки компиляции - PullRequest
0 голосов
/ 11 июля 2019

Я хочу знать, есть ли способ заставить Oracle не создавать a Процедура / функция , если он имеет ошибку любого типа.

Ответы [ 2 ]

1 голос
/ 11 июля 2019

В сценарии 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
0 голосов
/ 11 июля 2019

Насколько я могу судить, их нет. Хранимая процедура будет создана в недопустимом состоянии.

Хотя вы можете попытаться создать обертку процедуру, которая бы

  • создать процедуру
  • проверить его статус
  • сбросьте, если оно недействительно
...