Publié le :
Administration CREATION_INTERNE

Suppression de bibliothèque via Métadonnées SAS

Ce code est également disponible en : English Español
En attente de validation
Attention : Ce code nécessite des droits administrateur.
La macro `mm_deletelibrary` automatise la suppression d'une bibliothèque SAS© déclarée dans le serveur de métadonnées (héritage SAS© 9). Elle vérifie d'abord l'existence de l'objet via `metadata_resolve`. Si la bibliothèque existe, elle construit dynamiquement une requête XML `DeleteMetadata` et l'exécute à l'aide de la `PROC METADATA`. Enfin, elle vérifie que la suppression a bien été effectuée et déclenche une erreur via `%mp_abort` si ce n'est pas le cas.
Analyse des données

Type : CREATION_INTERNE


Le script génère lui-même les fichiers XML nécessaires à la `PROC METADATA` via des étapes DATA `_NULL_` et n'utilise pas de données externes.

1 Bloc de code
DATA STEP
Explication :
Vérifie l'existence de la bibliothèque dans le serveur de métadonnées en utilisant la fonction `metadata_resolve` avec le nom fourni en paramètre. Récupère l'URI et le type de l'objet.
Copié !
1DATA _null_;
2 LENGTH type uri $256;
3 rc=metadata_resolve("omsobj:SASLibrary? @Name='&name'",type,uri);
4 call symputx('checktype',type,'l');
5 call symputx('liburi',uri,'l');
6 putlog (_all_)(=);
7RUN;
2 Bloc de code
DATA STEP Data
Explication :
Génère le fichier XML de requête pour l'action `DeleteMetadata`. Ce fichier temporaire contient l'instruction de suppression ciblant l'URI de la bibliothèque identifiée précédemment.
Copié !
1filename &fname1 temp lrecl=10000;
2filename &fname2 temp lrecl=10000;
3DATA _null_ ;
4 file &fname1 ;
5 put "<DeleteMetadata><Metadata><SASLibrary Id='&liburi'/>";
6 put "</Metadata><NS>SAS</NS><Flags>268436480</Flags><Options/>";
7 put "</DeleteMetadata>";
8RUN ;
3 Bloc de code
PROC METADATA
Explication :
Exécute la procédure `PROC METADATA` pour envoyer la requête XML générée au serveur de métadonnées et effectuer la suppression.
Copié !
1PROC METADATA in=&fname1 out=&fname2 verbose;RUN;
4 Bloc de code
DATA STEP
Explication :
Vérifie post-exécution si la bibliothèque existe toujours en interrogeant à nouveau le serveur de métadonnées avec l'URI. Le résultat est stocké dans la macro-variable `isgone`.
Copié !
1DATA _null_;
2 LENGTH type uri $256;
3 call missing (of _all_);
4 rc=metadata_resolve("omsobj:SASLibrary? @Id='&liburi'",type,uri);
5 call symputx('isgone',type,'l');
6RUN;
5 Bloc de code
Macro Call
Explication :
Appelle la macro utilitaire `%mp_abort` pour arrêter l'exécution et signaler une erreur si la bibliothèque est toujours détectée (échec de la suppression).
Copié !
1%mp_abort(iftrue=(&isgone = SASLibrary)
2 ,mac=&sysmacroname
3 ,msg=%str(Library (&name) NOT deleted)
4)
Ce matériel est fourni "tel quel" par We Are Cas. Il n'y a aucune garantie, expresse ou implicite, quant à la qualité marchande ou à l'adéquation à un usage particulier concernant le matériel ou le code contenu dans les présentes. We Are Cas n'est pas responsable des erreurs dans ce matériel tel qu'il existe maintenant ou existera, et We Are Cas ne fournit pas de support technique pour celui-ci.
Informations de Copyright : Allan Bowe


Banner
Le Conseil de l'Expert
Expert
Simon
Expert SAS et fondateur.
« Attention, ce script supprime la définition de la bibliothèque dans les métadonnées SAS (ce qui la rend invisible pour les utilisateurs et les applications), mais il ne supprime pas les fichiers .sas7bdat sur le disque dur ou les tables dans la base de données source. »