如何在ORACLE中执行代码块时忽略错误

如何在ORACLE中执行代码块时忽略错误,oracle,exception,plsql,oracle11g,Oracle,Exception,Plsql,Oracle11g,我试图在oracle中运行一个代码块,如果它抛出一些错误,它就会退出该代码块。我如何克服它?我尝试添加一些异常,但没有成功。下面是代码及其错误 > begin for i in ( > select constraint_name , table_name > from user_constraints > where constraint_type ='C' > and status = 'ENABLED' ) LOOP db

我试图在oracle中运行一个代码块,如果它抛出一些错误,它就会退出该代码块。我如何克服它?我尝试添加一些异常,但没有成功。下面是代码及其错误

> begin for i in  (
>     select constraint_name , table_name 
>     from user_constraints 
>     where constraint_type ='C'
>     and status = 'ENABLED' ) LOOP dbms_utility.exec_ddl_statement('alter table "'|| i.table_name || '"
> disable constraint ' || i.constraint_name); end loop; end; /
它抛出以下错误,该错误应被忽略,块应继续执行

begin
*
ERROR at line 1:
ORA-30671: cannot modify NOT NULL constraint on an identity column
ORA-06512: at "SYS.DBMS_UTILITY", line 574
ORA-06512: at line 9

我尝试添加了一些不太好用的异常

这里应该使用嵌套的开始-结束块,异常处理在内部块中

begin for i in  (
     select constraint_name , table_name 
     from user_constraints 
     where constraint_type ='C'
     and status = 'ENABLED' )
  LOOP
     BEGIN
      dbms_utility.exec_ddl_statement('alter table "'|| i.table_name || '"disable constraint ' || i.constraint_name);
     EXCEPTION
     WHEN OTHERS THEN
        /* Your exception handing here. */
        NULL;
     END;
  end loop;
  end;
  /

你们还面临这个问题吗?嗨,马赫什,对不起,现在清楚了。谢谢。:)