La macro `mp_deleteconstraints` traite un jeu de données SAS qui doit être fourni via le paramètre `inds=`. Ce jeu de données est généralement le résultat d'une autre procédure ou macro SAS (comme `mp_getconstraints` mentionné dans l'en-tête), qui extrait les métadonnées de contraintes de tables SAS existantes. L'exemple d'utilisation dans les commentaires suggère que le jeu de données d'entrée peut être créé à partir de tables temporaires (`work.example`), ce qui indique une gestion de données interne au système SAS plutôt qu'une importation directe de fichiers externes.
1 Bloc de code
Macro Définition et PROC SORT
Explication : Ce bloc initialise la macro `mp_deleteconstraints` et définit ses trois paramètres : `inds` pour le jeu de données d'entrée des contraintes, `outds` pour le jeu de données de sortie trié, et `execute` pour contrôler l'exécution des commandes SQL. La procédure `PROC SORT` est ensuite utilisée pour trier le jeu de données d'entrée (`&inds`) selon les variables `libref`, `table_name` et `constraint_name`. Le jeu de données trié est enregistré sous le nom spécifié par `&outds`.
Explication : Ce `DATA STEP` traite le jeu de données trié, générant une instruction SQL `ALTER TABLE ... DROP CONSTRAINT` pour chaque contrainte unique (détectée par `first.constraint_name`). La variable `drop_statement` est créée pour stocker cette instruction. Si le paramètre `execute` de la macro est 'YES', la commande `CALL EXECUTE('proc sql;')` est utilisée une seule fois au début du `DATA STEP` pour ouvrir un bloc SQL, et `CALL EXECUTE(drop_statement)` exécute chaque instruction de suppression de contrainte générée. Le `DATA STEP` écrit également les instructions générées dans le jeu de données de sortie `&outds`.
Copié !
data &outds;
set &outds;
by libref table_name constraint_name;
length drop_statement $500;
if _n_=1 and "&execute"="YES" then call execute('proc sql;');
if first.constraint_name then do;
drop_statement=catx(" ","alter table",libref,".",table_name
,"drop constraint",constraint_name,";");
output;
if "&execute"="YES" then call execute(drop_statement);
end;
run;
%mend mp_deleteconstraints;
1
DATA &outds;
2
SET &outds;
3
BY libref table_name constraint_name;
4
LENGTH drop_statement $500;
5
IF _n_=1 and "&execute"="YES"THEN call execute('proc sql;');
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 : Copyright (c) 2001-2006 Rodney Sparapani
« La macro mp_deleteconstraints est un outil d'administration indispensable pour gérer dynamiquement l'intégrité référentielle au sein d'une bibliothèque SAS. En s'appuyant sur un jeu de données de métadonnées, elle transforme une tâche de maintenance potentiellement complexe et manuelle en un processus automatisé, réversible et auditable. »
SAS et tous les autres noms de produits ou de services de SAS Institute Inc. sont des marques déposées ou des marques de commerce de SAS Institute Inc. aux États-Unis et dans d'autres pays. ® indique un enregistrement aux États-Unis. WeAreCAS est un site communautaire indépendant et n'est pas affilié à SAS Institute Inc.
Ce site utilise des cookies techniques et analytiques pour améliorer votre expérience.
En savoir plus.