mercredi 15 avril 2015

DROP de table ORACLE si et seulement si elle existe

Imaginons que vous souhaitez créer une table par script SQL sur Oracle 11 (par exemple la table TEST).

Mais vous ne savez pas si elle existe déjà ou non.

Et surtout vous ne voulez aucune erreur (ni à la création, ni à la destruction) !

Vous pouvez alors utiliser un script de configuration comme suit :

DECLARE
  t_count INTEGER;
  v_sql VARCHAR2(1000) := 'DROP TABLE  "TEST"  CASCADE CONSTRAINTS';
BEGIN
  SELECT COUNT(*)
    INTO t_count
    FROM user_tables
   WHERE table_name = 'TEST';

  IF t_count > 0 THEN
    EXECUTE IMMEDIATE v_sql;
  END IF;
END;


Qui effacera la table si et seulement si elle existe préalablement.

Ensuite le script de création pourra se dérouler normalement, et sans erreurs.