我有一个定义如下的宏函数。
%macro sqlloop(event_id, empl_nbr_var, fleet, base, position);
...lots of code...
%mend;
实际代码将基于一个更大的表进行引用,但为了故障排除和简单性,我有一个该表第一行的缩短版本,row1.
| event_id | empl_nbr_var | 舰队 | 根据 | 位置 |
|---|---|---|---|---|
| 1234 | 111 | 320 | CHS | 一个 |
在输出数据中检查所有类型的字符,除了 event_id,它是数字的。这正是我想要的程序。当我手动输入这个时,它工作得很好。
%sqlloop(1234, '111', '320', 'CHS', 'A');
但是,以下代码会引发各种错误,这源于我认为是类型问题。
data _null_;
set Work.row1;
call execute('%sqlloop(17,'||strip(empl_nbr_var)||','||strip(fleet)||','||strip(base)||','||strip(position)||');');
run;
现在忽略第 17 部分,假设那是正确的
我得到的第一个错误如下,所有其他错误似乎都源于该表未创建。
ERROR: The following columns were not found in the contributing tables: A, CHS.
请注意,A 或 CHS 周围没有引号,我认为应该有引号?对 SAS 来说还是新手,所以不是很熟悉,但对我来说,这似乎是错误。这是strip()的奇怪之处,还是我完全缺少的其他东西?