我有一个表,它有lib、table和一些SQL字符串的属性,我想用宏执行这些属性,以获得其他表的一些统计数据,并用它更新我的原始表。
%macro busca_parametros;
proc sql noprint;
select
livraria,
tabela,
tot_colunas,
sql_tot_linhas,
sql_sum_num,
sql_min_data,
sql_max_data
into
:livraria1-,
:tabela1-,
:tot_colunas1-,
:sql_tot_linhas1-,
:sql_sum_num1-,
:sql_min_data1-,
:sql_max_data1-
from libx.tablex;
quit;
%do i = 1 %to &sqlobs;
proc sql noprint;
update libx.tablex
set
tot_linhas=&&sql_tot_linhas&i.,
sum_num=&&sql_sum_num&i.,
min_data=&&sql_min_data&i.,
max_data=&&sql_max_data&i.
where livraria=&&livraria&i.
and tabela=&&tabela&i.
quit;
%end;
%mend;
%busca_parametros
我在所有宏变量范围上都得到了这个错误(下面的图片链接(,从一个有计数(*(的字符串开始,我不知道为什么。不管怎样,我真的不知道这是否有效,因为我无法运行它,感谢帮助,提前tks。
记录SAS
如果set语句包含内联查询,则它们需要放在括号中。
tot_linhas = (&&sql_tot_linhas&i.),
sum_num = (&&sql_sum_num&i.),
min_data = (&&sql_min_data&i.),
max_data = (&&sql_max_data&i.)
例如:
data have;
set sashelp.cars;
run;
proc sql;
update have
set horsepower = (select count(*) from sashelp.class)
;
quit;