2010-01-12 5 views
0

Je dois déposer une table et en créer une nouvelle. Si je dépose la table et la table n'existe pas, j'obtiens une erreurSi je dépose une table et que la table n'existe pas, j'obtiens une erreur

Comment puis-je vérifier si la table existe?

Je travaille sur Oracle 11g

de Merci à l'avance.

+1

existant = existe – Hogan

+1

Obtenir une erreur n'est pas la fin du monde - vous pouvez simplement gérer l'erreur avec un gestionnaire d'exceptions si la table n'existe pas. –

+0

duplication possible de [Oracle: si Table existe] (http://stackoverflow.com/questions/1799128/oracle-if-table-exists) –

Répondre

6

Vous pouvez faire quelque chose comme ceci:

DECLARE v_exist PLS_INTEGER; 
BEGIN 

SELECT COUNT(*) INTO v_exist 
FROM user_tables 
WHERE table_name = 'YOURTABLEHERE'; 

IF v_exist = 1 THEN 
    EXECUTE IMMEDIATE 'DROP TABLE YOURTABLEHERE'; 
END IF; 
1

quelque chose comme

select count(*) from user_tables 
where table_name= :table name 

ou

select count(*) from dba_tables 
where owner = :table owner 
and table_name = :table name 

ou une alternative lourde:

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

J'utilise la procédure suivante pour prendre soin de ceci:

create or replace procedure drop_table_if_exists (p_table_name varchar2) 
is 
    it_exist number; 
begin 
    select count(*) 
    into it_exists 
    from user_tables 
    where table_name = p_table_name 
    ; 
    if it_exists >= 1 then 
    execute immediate 'drop table '||p_table_name; 
    end if; 
end; 
/

exec drop_table_if_exists ('TABLE_TO_DROP'); 
4
DECLARE 
    eTABLE_OR_VIEW_DOES_NOT_EXIST EXCEPTION; 
    PRAGMA EXCEPTION_INIT(eTABLE_OR_VIEW_DOES_NOT_EXIST, -942); 
BEGIN 
    EXECUTE IMMEDIATE 'DROP TABLE SCHEMA.WHATEVER'; 
EXCEPTION 
    WHEN eTABLE_OR_VIEW_DOES_NOT_EXIST THEN 
    NULL; 
END; 

Share and Enjoy.