SAS - 输入表列表作为宏参数

SAS - input list of tables as macro parameter

我想输入一个表格列表作为宏参数。

宏代码:

%MACRO Marco_Name ( Table_Name ) ;
    PROC SQL;    
    execute (
    select (owner ||'.'||table_name) as table_name from dba_tables 
    where table_name in (&Table_Name.)
   )
   QUIT;
%MEND Marco_Name ;

当我调用宏时,例如:

%Marco_Name ( Table_Name = 'table1', 'table2, 'table3')

我想将代码解析为:

select (owner ||'.'||table_name) as table_name from dba_tables
where table_name in ('table1', 'table2, 'table3')

欢迎来到精彩的宏编程世界。

%STR 宏函数用于包装包含逗号的值,否则在作为参数传递时会混淆宏处理器。

调用宏如下:

%MyMacro ( Table_Name = %str ( 'table1', 'table2, 'table3' ) )