有兴趣的请笑纳。特别是做ETL的朋友。
LIBNAME TEST "D:\TESTDATA";
%LET RPT=RPT_TEMP;
proc sql;
create table test.change as
select
memname
from dictionary.tables
where libname eq "TEST";
quit;
%MACRO CHANGE();
%LET DSID=%SYSFUNC(OPEN(test.change));
%IF &DSID GT 0 %THEN %DO;
%LET NOBS=%SYSFUNC(ATTRN(&DSID,NOBS));
%DO I=1 %TO &NOBS;
%LET RC=%SYSFUNC(FETCHOBS(&DSID,&I));
%LET VARNUME=%SYSFUNC(VARNUM(&DSID,MEMNAME));
%LET TABLE=%SYSFUNC(GETVARC(&DSID,&VARNUME));
PROC DATASETS LIB=TEST;
CHANGE &TABLE=&RPT._T&I.;
QUIT;
%END;
%LET DSID=%SYSFUNC(CLOSE(&DSID));
%END;
%MEND CHANGE;
%CHANGE;