oracle删除表(如果存在,pl / sql无法使用异常工作)>

问题描述 投票:0回答:1

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未被删除。

oracle:如果存在pl / sql,则使用异常无法删除表。例如,SQL>在SQL上设置服务器输出>开始SQL>立即执行'DROP TABLE Foo'; SQL>其他时则例外...

oracle plsql ddl drop-table
1个回答
0
投票

怎么样?

© www.soinside.com 2019 - 2024. All rights reserved.