La macro `mp_deleteconstraints` procesa un conjunto de datos SAS que debe ser proporcionado a través del parámetro `inds=`. Este conjunto de datos es generalmente el resultado de otro procedimiento o macro SAS (como `mp_getconstraints` mencionado en el encabezado), que extrae los metadatos de restricciones de tablas SAS existentes. El ejemplo de uso en los comentarios sugiere que el conjunto de datos de entrada puede crearse a partir de tablas temporales (`work.example`), lo que indica una gestión de datos interna al sistema SAS en lugar de una importación directa de archivos externos.
1 Bloque de código
Macro Definición y PROC SORT
Explicación : Este bloque inicializa la macro `mp_deleteconstraints` y define sus tres parámetros: `inds` para el conjunto de datos de entrada de restricciones, `outds` para el conjunto de datos de salida ordenado, y `execute` para controlar la ejecución de los comandos SQL. El procedimiento `PROC SORT` se utiliza luego para ordenar el conjunto de datos de entrada (`&inds`) según las variables `libref`, `table_name` y `constraint_name`. El conjunto de datos ordenado se guarda bajo el nombre especificado por `&outds`.
Explicación : Este `DATA STEP` procesa el conjunto de datos ordenado, generando una instrucción SQL `ALTER TABLE ... DROP CONSTRAINT` para cada restricción única (detectada por `first.constraint_name`). La variable `drop_statement` se crea para almacenar esta instrucción. Si el parámetro `execute` de la macro es 'YES', el comando `CALL EXECUTE('proc sql;')` se utiliza una sola vez al inicio del `DATA STEP` para abrir un bloque SQL, y `CALL EXECUTE(drop_statement)` ejecuta cada instrucción de eliminación de restricción generada. El `DATA STEP` también escribe las instrucciones generadas en el conjunto de datos de salida `&outds`.
¡Copiado!
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;');
Este material se proporciona "tal cual" por We Are Cas. No hay garantías, expresas o implícitas, en cuanto a la comerciabilidad o idoneidad para un propósito particular con respecto a los materiales o el código contenidos en este documento. We Are Cas no es responsable de los errores en este material tal como existe ahora o existirá, ni We Are Cas proporciona soporte técnico para el mismo.
Información de copyright : Copyright (c) 2001-2006 Rodney Sparapani
SAS y todos los demás nombres de productos o servicios de SAS Institute Inc. son marcas registradas o marcas comerciales de SAS Institute Inc. en los EE. UU. y otros países. ® indica registro en los EE. UU. WeAreCAS es un sitio comunitario independiente y no está afiliado a SAS Institute Inc.
Este sitio utiliza cookies técnicas y analíticas para mejorar su experiencia.
Saber más.