我编写了一些代码来删除库中的所有完整性约束。但是,当我加载了很多表/库时,从sashelp.vtable读取需要花费很长时间。如何在SAS 9.4中更有效地完成它,同时保持简单?
%let mv_lib='DL';
data _null_;
set sashelp.vtable (keep=libname memtype memname) end=eof;
where libname=&mv_lib. and memtype='DATA';
if _n_ = 1 then call execute('proc datasets library='||&mv_lib.||' nolist nodetails;');
call execute(catx(' ','modify',memname,'; ic delete _all_; run;'));
if eof then call execute('quit;');
run;
答案 0 :(得分:0)
我认为发生的事情是SAS无法将WHERE
从数据步骤通过SASHELP.VTABLE视图传递到DICTIONARY.TABLES对象的实际查询,因此您正在查询所有的libnames。
尝试使用PROC SQL。
%let mv_lib='DL';
proc sql ;
create table mylist as
select libname,memname
from dictionary.tables
where libname=&mv_lib. and memtype='DATA'
;
quit;
data _null_;
set mylist ;
...