首页 > 解决方案 > 限制 Oracle 创建编译错误程序

问题描述

我想知道如果Oracle 有任何类型的错误,是否有办法让Oracle 不创建过程/函数。

标签: oraclefunctionplsqlprocedure

解决方案


在 CREATE 之后的 SQL 脚本中,您可以检查 ALL_ERRORS(或 dba_errors)以查找该对象上的错误,如果存在错误,则立即执行以删除它。

例如)

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

推荐阅读