Un rapide billet pour vous donner une procédure PL/SQL permettant de supprimer toutes les autres procédures stockées dans Oracle. Sachant que j’utilise actuellement Oracle SQL Developer au boulot, et qu’il n’est pas possible de sélectionner plusieurs procédures pour les supprimer toutes en même temps, j’ai cherché un peu sur le web et trouver 2-3 bouts pour construire cette méthode, permettant de supprimer toutes les procédures dont le nom commence par XYZ (XYZ est une chaine de caractère désignant par quoi commence les procédures stockées à supprimer).
Attention, on voit dans la requête de création qu’on filtre les procédures par l’attribut objet_type. Pour faire la même chose sur les fonctions, il suffit de remplacer object_type = ‘PROCEDURE’ par object_type = ‘FUNCTION’ .
create or replace procedure abcdefghi (debut_nomproc in varchar2) is stmt_str VARCHAR2(18000); cursor combi is select object_name from user_objects u_o where u_o.object_type = 'PROCEDURE' and u_o.object_name like debut_nomproc||'%'; begin FOR r in combi LOOP stmt_str := 'DROP PROCEDURE '||r.object_name||' ' ; EXECUTE IMMEDIATE stmt_str; COMMIT WORK; END LOOP; end; / execute abcdefghi('T');
Recompiler toutes les procédures stockées
Il arrive que Oracle présente les procédures stockées comme non valide. Il suffit alors de les recompiler une par une pour les voir « compilées ». D’où une procédure, basée sur le code ci-dessus, pour les recompiler toutes.
create or replace procedure APROC_RECOMPILE_TOUS (debut_nomproc in varchar2) is stmt_str VARCHAR2(18000); cursor combi is select object_name from user_objects u_o where u_o.object_type = 'PROCEDURE' and u_o.object_name like debut_nomproc||'%'; begin FOR r in combi LOOP stmt_str := 'ALTER PROCEDURE '||r.object_name||' COMPILE' ; EXECUTE IMMEDIATE stmt_str; COMMIT WORK; END LOOP; end; / execute APROC_RECOMPILE_TOUS('%');
Merci pour l’infos 🙂