SAS使用宏执行sql字符串



我有一个表,它有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;

最新更新