2017-08-03 43 views
0

刪除所有完整性約束。但是,當我加載了很多表/庫時,從sashelp.vtable讀取需要一個looong時間。我如何在SAS 9.4中更高效地執行此操作,同時保持簡單?SAS - 有效地從我寫一些代碼從庫中刪除所有完整性約束庫

%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

我認爲,正在發生的事情是,SAS無法通過SASHELP.VTABLE視圖進入實際查詢傳遞從數據步驟WHERE到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 ; 
    ... 
+0

不應該是dictionary.table ** s **?工作得更快,謝謝! –

+0

對。 SASHELP.VTABLE查詢DICTIONARY.TABLES – Tom

相關問題