SAS:宏变量和字符串。正确的表名
Posted
技术标签:
【中文标题】SAS:宏变量和字符串。正确的表名【英文标题】:SAS: Macro variable and string. Correct TableName 【发布时间】:2012-05-21 21:43:16 【问题描述】:这是宏的一部分:
%let mvTableName = "MyTable";
proc append base = &mvTableName data = TEMP_TABLE;
run;
我在 WORK 中找不到表:\
之后我检查表的创建。
data &mvTableName;
run;
并在日志中查看:Dataset MyTable ...
但是当我更改字符串%let mvTableName=MyTable;
我看到了这个日志:Dataset WORK.MyTable ..
如何解释?
【问题讨论】:
【参考方案1】:如果您要使用 mvTableName 作为 DATA= 选项的输入,请不要包含双引号
假设 MyTable 和 Temp_table 是 WORK 库中的 SAS 数据集...这应该可以。
%Let mvTableName=MyTable;
Proc Append base=&mvTableName data=temp_table;
run;
还有,
Data &mvTableName;
Run;
创建一个空数据集...所以 mvTableName 将被一个空数据集覆盖。
【讨论】:
在宏变量赋值中从 = 到 ;分配给宏变量...与不包含引号的数据步骤变量分配不同。引号包含在 BASE= 语句中……这是不正确的。在宏变量赋值中使用引号是很少见的(有人会说它不应该发生)。如果您需要在语句中使用引号......只需包装宏 var。请务必使用双引号,否则宏变量将无法解析。以上是关于SAS:宏变量和字符串。正确的表名的主要内容,如果未能解决你的问题,请参考以下文章
为啥 MariaDB 不接受我的字符串变量作为我的 sql 查询中的表名?