Oracle - 确定表是否存在

时间:2011-06-15 13:58:15

标签: oracle

如何在oracle中确定表是否存在? 在脚本文件上,我只想删除一个表。

谢谢!

3 个答案:

答案 0 :(得分:2)

http://www.dba-oracle.com/bk_check_table_exists.htm

这里给出了各种解决方案。最简单的:

SQL> desc mytable

或者只是尝试删除并捕获异常:

begin 
execute immediate 'drop table TABLE1'; 
exception when others then null; 
end;

答案 1 :(得分:1)

Oracle有一个all_tables表,您可以查询该表。

也许是这样的:

declare
    v_tab_count number := 0;
begin
    select count(*)
    into v_tab_count
    from all_tables
    where table_name = 'MY_TABLE';

    if v_tab_count > 0 then
        execute immediate 'drop table my_table';
    else
        dbms_output.put_line('The table isn''t there! maybe you deleted it already?');
    end if;
exception
    when others then
        dbms_output.put_line( sqlerrm);
end if;
/

我知道我之前在其他人的帖子中评论说我不喜欢使用execute immediate,但我忘记了这是从PL / SQL执行drop table的唯一方法。

答案 2 :(得分:1)

您可以向USER_TABLES查询TABLE_NAME ='YOUR_TABLE_NAME': - )