Das Makro `mp_deleteconstraints` verarbeitet einen SAS-Datensatz, der über den Parameter `inds=` bereitgestellt werden muss. Dieser Datensatz ist normalerweise das Ergebnis einer anderen SAS-Prozedur oder eines Makros (wie `mp_getconstraints`, das im Header erwähnt wird), das die Metadaten der vorhandenen SAS-Tabellenbeschränkungen extrahiert. Das Anwendungsbeispiel in den Kommentaren deutet darauf hin, dass der Eingabedatensatz aus temporären Tabellen (`work.example`) erstellt werden kann, was auf eine interne Datenverwaltung im SAS-System und nicht auf einen direkten Import externer Dateien hindeutet.
1 Codeblock
Macro Définition et PROC SORT
Erklärung : Dieser Block initialisiert das Makro `mp_deleteconstraints` und definiert seine drei Parameter: `inds` für den Eingabedatensatz der Beschränkungen, `outds` für den sortierten Ausgabedatensatz und `execute` zur Steuerung der Ausführung der SQL-Befehle. Die Prozedur `PROC SORT` wird anschließend verwendet, um den Eingabedatensatz (`&inds`) nach den Variablen `libref`, `table_name` und `constraint_name` zu sortieren. Der sortierte Datensatz wird unter dem durch `&outds` angegebenen Namen gespeichert.
Erklärung : Dieser `DATA STEP` verarbeitet den sortierten Datensatz und generiert für jede eindeutige Beschränkung (erkannt durch `first.constraint_name`) eine SQL-Anweisung `ALTER TABLE ... DROP CONSTRAINT`. Die Variable `drop_statement` wird erstellt, um diese Anweisung zu speichern. Wenn der Parameter `execute` des Makros 'YES' ist, wird der Befehl `CALL EXECUTE('proc sql;')` nur einmal zu Beginn des `DATA STEP` verwendet, um einen SQL-Block zu öffnen, und `CALL EXECUTE(drop_statement)` führt jede generierte Anweisung zum Löschen der Beschränkung aus. Der `DATA STEP` schreibt die generierten Anweisungen auch in den Ausgabedatensatz `&outds`.
Kopiert!
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;');
Dieses Material wird von We Are Cas "wie besehen" zur Verfügung gestellt. Es gibt keine ausdrücklichen oder stillschweigenden Garantien hinsichtlich der Marktgängigkeit oder Eignung für einen bestimmten Zweck in Bezug auf die hierin enthaltenen Materialien oder Codes. We Are Cas ist nicht verantwortlich für Fehler in diesem Material, wie es jetzt existiert oder existieren wird, noch bietet We Are Cas technischen Support dafür an.
SAS und alle anderen Produkt- oder Dienstleistungsnamen von SAS Institute Inc. sind eingetragene Marken oder Marken von SAS Institute Inc. in den USA und anderen Ländern. ® zeigt die Registrierung in den USA an. WeAreCAS ist eine unabhängige Community-Site und nicht mit SAS Institute Inc. verbunden.
Diese Website verwendet technische und analytische Cookies, um Ihre Erfahrung zu verbessern.
Mehr erfahren.