我的宏有问题。如果名称存在,请尝试创建表。
%let tableA = Cars;
%let tableB =;
这有效:
%macro CREATETABLE(name);
%if %symexist(name) = 1 %then %do;
proc sql;
Create table ....
但是如果表名不存在:
%else...( do nothing )
我希望SAS什么都不做,但我没有让它工作。由于表名确实存在,因此总是会出现SAS错误。
%CREATETABLE(CARS)/%CREATETABLE(&tableA) - works, %symexist(chkTabelle) -> 1
%CREATETABEL(asfsf)/%CREATETABLE(&tableB) - error, %symexist(chkTabelle) -> 0
答案 0 :(得分:0)
%symexist检查是否存在宏符号。宏符号NAME始终存在。听起来您想检查数据集是否存在。为此,您可以使用EXIST()函数。
从文档中
http://support.sas.com/kb/24/670.html
%macro checkds(dsn);
%if %sysfunc(exist(&dsn)) %then %do;
proc print data = &dsn;
run;
%end;
%else %do;
data _null_;
file print;
put #3 @10 "Data set &dsn. does not exist";
run;
%end;
%mend checkds;