sas - 检查表是否存在,如果不存在则什么都不做
问题描述
我的宏有问题。如果名称存在,请尝试创建一个表。
%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
解决方案
%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;
推荐阅读
- python - 条件介于两者之间的 Keras 垂直集成模型
- python - 没有numpy的矩阵乘法
- c++ - 浮点值丢失 :: 使用 rapidjson 读取 JSON
- x86 - 将实模式内存访问指令转换为 AT&T 语法
- java - 为什么使用位移而不是 for 循环?
- docker - kubernetes 1.18 和 1.19 支持哪些 docker 版本?
- python - 以小时为单位获取日期时间之间的差异,将两个四舍五入设置为 2
- python - 散列例如字符串的向量以获得散列的一对一sha256向量(Python)
- docker - 如何在使用 Gitlab CI runner 拉取 docker:dind 之前在 Dockerhub 上进行身份验证
- java - JavaFX getStylesheet().add(path) 不允许我从 Maven 项目的根目录读取