Oracle - определение наличия таблицы - PullRequest
0 голосов
/ 15 июня 2011

Как вы определяете в оракуле, существует ли таблица?В файле сценария я хотел удалить таблицу, только если она существует.

Спасибо!

Ответы [ 3 ]

2 голосов
/ 15 июня 2011

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 голос
/ 15 июня 2011

Вы можете запросить USER_TABLES для TABLE_NAME = 'YOUR_TABLE_NAME': -)

1 голос
/ 15 июня 2011

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, но я забыл, что это единственный способ выполнить drop table из PL / SQL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...