Powerd911 – Numéro #1 au Canada

Générer des scripts SQL, à l’aide de PowerAMC, ​avec moins d’erreurs

Il vous est, peut-être, arrivé que suite à l’exécution d’un script de modification que vous réalisez que PowerAMC tente de supprimer des tables « tmp_ tables », des index et des séquences inexistants.

Si ces objets n’existent pas, cela provoque une erreur lors de l’exécution du script. Habituellement on n’aime pas que les scripts se terminent avec SQLERROR EXIT FAILURE et que cela mette ainsi un frein à un déploiement.

La définition originale de la commande DROP TABLE est: « DROP TABLE [% QUALIFIER%]% TABLE% [cascade constraints] »

Afin de corriger ce problème nous allons donc modifier la définition ci-dessous pour un bloc PL / SQL anonyme qui déclenchera une erreur lorsque nous aurons autre chose que ORA-00942 Table introuvable, etc.

TABLE

— Définition qui permet de supprimer un objet seulement si ce dernier existe.

BEGIN

EXECUTE IMMEDIATE ‘drop table [%QUALIFIER%]%TABLE% [cascade constraints]’;

EXCEPTION

WHEN OTHERS THEN

— Si nous avons une erreur qui n’est pas à cause que l’objet n’existe pas

IF SQLCODE != -942 THEN

RAISE ;

END IF ;

END ;

D’une façon similaire nous allons modifier la définition suivante pour un bloc PL/SQL anonyme afin de supprimer les INDEX. 

INDEX

— Définition qui permet de supprimer un objet seulement si ce dernier existe.

BEGIN

EXECUTE IMMEDIATE ‘drop index [%QUALIFIER%]%INDEX%’;

EXCEPTION

WHEN OTHERS THEN

— Si nous avons une erreur qui n’est pas à cause que l’objet n’existe pas

IF SQLCODE != -1418 THEN

RAISE ;

END IF ;

END ;

 

Et nous allons faire la même chose pour les SEQUENCE

SEQUENCE

— Définition qui permet de supprimer un objet seulement si ce dernier existe.

BEGIN

EXECUTE IMMEDIATE ‘drop sequence [%QUALIFIER%]%SQNC%’;

EXCEPTION

WHEN OTHERS THEN

— Si nous avons une erreur et que ce n’est pas à cause que l’objet n’existe pas

IF SQLCODE != -2289 THEN

RAISE ;

END IF ;

END ;

 

Avec une grande flexibilité … vient une grande responsabilité. Portez attention lorsque vous modifier certains comportements fondamental de la génération de script à l’aide de PowerAMC.

 

Laisser un commentaire