我不想在删除不存在的表时出现错误。

23 浏览
0 Comments

我不想在删除不存在的表时出现错误。

这个问题已经有答案了:

Oracle: 如果表存在

我正在使用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;

但是当表不存在时,它不能跳过错误,我该如何解决这个问题

admin 更改状态以发布 2023年5月21日
0
0 Comments

动态地DROPCREATE表是一个不好的想法。无论如何,如果您确实想要这样做,那么您需要(滥用)EXECUTE IMMEDIATEPL/SQL中执行此操作。

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

BEGIN
   EXECUTE IMMEDIATE 'DROP TABLE table_name';
EXCEPTION
   WHEN OTHERS THEN
      IF SQLCODE != -942 THEN
         RAISE;
      END IF;
END;
/

顺便说一下,DROP是一个DDL语句,它将隐式提交,因此无需显式提及COMMIT

0