Publicado el :
Macro EXTERNE

Macro de utilidad para truncar una tabla SAS

Este código también está disponible en: Deutsch English Français
Esta macro, llamada DI_UTIL_TRUNCATE_TABLE, permite vaciar una tabla de todos sus datos sin eliminarla. Utiliza un método de dos pasos: primero, exporta la estructura de la tabla (pero sin datos gracias a la opción OBS=0) a un archivo de transporte temporal a través de PROC CPORT. Luego, reimporta esta estructura desde el archivo temporal con PROC CIMPORT, lo que tiene el efecto de sobrescribir la tabla existente con una tabla vacía. Los índices y las restricciones se conservan. La macro también guarda y restaura las opciones del sistema OBS y NOTES para no afectar el entorno del usuario.
Análisis de datos

Type : EXTERNE


La macro opera sobre una tabla SAS existente cuyo nombre se proporciona como parámetro. No se crea ni se lee ningún dato de SASHELP.

1 Bloque de código
MACRO
Explicación :
Este bloque define la macro `DI_UTIL_TRUNCATE_TABLE`. Toma un nombre de tabla como parámetro. La ejecución comienza guardando las opciones globales `obs` y `notes`. Luego, establece `obs=0` para no leer ninguna observación y usa `PROC CPORT` para exportar solo la estructura de la tabla de entrada a un archivo temporal. Si este paso tiene éxito (`syserr=0`), se llama a `PROC CIMPORT` para reimportar la estructura desde el archivo temporal a la misma tabla, lo que tiene el efecto de vaciarla. Finalmente, se restauran las opciones iniciales `obs` y `notes`. Se utiliza una etiqueta `EXIT` para asegurar que las opciones se restauran incluso en caso de error.
¡Copiado!
1%macro DI_UTIL_TRUNCATE_TABLE( TABLE ) ;
2 
3 *------save caller environment------;
4 %local callerobs;
5 %let callerobs = %sysfunc(getoption(obs));
6 %local callernotes;
7 %let callernotes = %sysfunc(getoption(notes));
8 
9 
10 *------cport zero obs of the table silently to capture table definition------;
11 options obs=0 nonotes;
12 filename tranfile temp;
13 PROC CPORT file=tranfile DATA=&TABLE; RUN;
14 %IF &syserr ne 0 %THEN %goto EXIT;
15 
16 
17 *------cimport the empty table definition------;
18 PROC CIMPORT INFILE=tranfile DATA=&TABLE extendsn=no; RUN;
19 %IF &syserr ne 0 %THEN %goto EXIT;
20 options obs=&callerobs &callernotes;
21 %put NOTE: %qupcase(&TABLE) has been truncated.;
22 
23 
24%EXIT:
25 options obs=&callerobs &callernotes;
26 
27%mend DI_UTIL_TRUNCATE_TABLE;
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) 2016 SAS Institute, Inc. All rights reserved.