Oracle
 sql >> Base de données >  >> RDS >> Oracle

Vérifier que la table existe ou non avant de la créer dans Oracle

Comme Rene l'a également commenté, il est assez rare de vérifier d'abord puis de créer la table. Si vous voulez avoir un code en cours d'exécution selon votre méthode, ce sera :

declare
nCount NUMBER;
v_sql LONG;

begin
SELECT count(*) into nCount FROM dba_tables where table_name = 'EMPLOYEE';
IF(nCount <= 0)
THEN
v_sql:='
create table EMPLOYEE
(
ID NUMBER(3),
NAME VARCHAR2(30) NOT NULL
)';
execute immediate v_sql;

END IF;
end;

Mais je préfère attraper l'exception, cela vous évite quelques lignes de code inutiles :

declare
v_sql LONG;
begin

v_sql:='create table EMPLOYEE
  (
  ID NUMBER(3),
  NAME VARCHAR2(30) NOT NULL
  )';
execute immediate v_sql;

EXCEPTION
    WHEN OTHERS THEN
      IF SQLCODE = -955 THEN
        NULL; -- suppresses ORA-00955 exception
      ELSE
         RAISE;
      END IF;
END; 
/