我不想在删除 table 时出现错误,尽管 table 不存在
I don't want to have the error when I drop a table although the table doesn't exist
我正在使用 Oracle 12c,我不想在删除 table '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;
但是当table不存在时无法跳过错误,请问如何解决这个问题
即时 DROP 和 CREATE 表不是个好主意。无论如何,如果你真的想这样做,那么你需要(ab)使用 EXECUTE IMMEDIATE 在 PL/SQL 中执行此操作。
例如,您可以编写一个匿名块:
BEGIN
EXECUTE IMMEDIATE 'DROP TABLE table_name';
EXCEPTION
WHEN OTHERS THEN
IF SQLCODE != -942 THEN
RAISE;
END IF;
END;
/
附带说明,DROP 是一个 DDL 语句,它将隐式提交,因此无需明确提及 提交.
我正在使用 Oracle 12c,我不想在删除 table '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;
但是当table不存在时无法跳过错误,请问如何解决这个问题
即时 DROP 和 CREATE 表不是个好主意。无论如何,如果你真的想这样做,那么你需要(ab)使用 EXECUTE IMMEDIATE 在 PL/SQL 中执行此操作。
例如,您可以编写一个匿名块:
BEGIN
EXECUTE IMMEDIATE 'DROP TABLE table_name';
EXCEPTION
WHEN OTHERS THEN
IF SQLCODE != -942 THEN
RAISE;
END IF;
END;
/
附带说明,DROP 是一个 DDL 语句,它将隐式提交,因此无需明确提及 提交.