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

SAS-作为宏参数的表的输入列表,sas,sas-macro,Sas,Sas Macro,我想输入一个表列表作为宏参数 宏代码: %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_

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

宏代码:

%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')

欢迎来到marco编程的精彩世界

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

按如下方式调用宏:

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

不要包括逗号。SAS
IN()
操作员不需要它们。如果您确实在使用需要它们的传递代码,那么让宏添加它们<代码>%let table_namec=%sysfunc(tranwrd(&table_name,%str(),%str(,))