oracle: drop table if exists
pl / sql не работает с использованием исключения. например,
SQL> SET SERVEROUTPUT ON
SQL> BEGIN
SQL> EXECUTE IMMEDIATE 'DROP TABLE Foo';
SQL> EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE(sqlerrm);
SQL> END;
SQL> /
Таблица Foo не удаляется.
create table Foo (id number(20,0), name varchar(20),
primary key(id));
create table Bar (id number(20,0), name varchar(20),
primary key(id),
constraint FK1 foreign key (id) references Foo (id));
Существует ограничение FK.
SET CONSTRAINTS ALL DEFERRED;
BEGIN EXECUTE IMMEDIATE 'DROP TABLE Foo'; EXCEPTION WHEN OTHERS THEN NULL; END;
/
SET CONSTRAINTS ALL IMMEDIATE;
Таблица Foo не удаляется.