我不希望在删除表时出现错误,尽管该表不存在

Abd*_*him 1 sql oracle sqlplus

我正在使用Oracle 12c,并且在删除表“ CONTINENT”时出现错误(如果它不存在的话)不会引起我的兴趣。

我做了这个

set echo on
set serveroutput on
alter session set current_schema=WORK_ODI;
set verify off
set pause off
--
WHENEVER SQLERROR CONTINUE  

drop table  CONTINENT;

COMMIT;

EXIT;
Run Code Online (Sandbox Code Playgroud)

但是当表不存在时它不会跳过该错误,请问该如何解决

Lal*_*r B 5

快速删除创建表是一个坏主意。无论如何,如果您确实要这样做,则需要(ab)使用EXECUTE IMMEDIATEPL / SQL中执行此操作。

例如,您可以编写一个匿名块:

BEGIN
   EXECUTE IMMEDIATE 'DROP TABLE table_name';
EXCEPTION
   WHEN OTHERS THEN
      IF SQLCODE != -942 THEN
         RAISE;
      END IF;
END;
/
Run Code Online (Sandbox Code Playgroud)

附带说明,DROP是将隐式提交的DDL语句,因此无需显式提及COMMIT