proc sql 到 select 大量文件的问题
Issue with proc sql to select large number of files
我正尝试使用下面的 proc sql
语句select 大量文件
proc sql;
select cats(libname, ".",memname) into :names separated by " "
from dictionary.tables
where upcase(libname) = "MYLIBNAME";
quit;
但是当我写入 %PUT Data sets: &names;
时,日志文件中什么也没有出现,并且我收到一条错误消息,指出宏 names
未解析。知道这里出了什么问题吗?
MYLIBNAME
是无效的库引用。 Libref 最多有 8 个字符。 MYLIBNAME 是 9 个字符,因此在您的 SAS 会话中将没有定义的库引用可以匹配它。
如果您尝试 libname = "WORK"
或 libname = "SASHELP"
会发生什么?宏变量 names
将被填充。
小心包含数千个表的库。一个宏变量的长度只能是 64K-2 个字符。
@Richard 的回答很完美。如果仍然无法正常工作,请执行以下操作。
尝试 outobs =1,只是检查有无 where 子句
proc sql outobs= 1;
select cats(libname, ".",memname) into :names separated by " "
from dictionary.tables
where upcase(libname) = "SASHELP";
quit;
%put &names;
使用 proc 内容,然后连接。如果您的宏变量长于 65534
,它将在下一步中显示错误
PROC CONTENTS DATA=SASHELP._ALL_ out= new(keep=memname libname) noprint; RUN
proc sql;
select cats(libname, ".",memname) into :names separated by " "
from new;
我正尝试使用下面的 proc sql
语句select 大量文件
proc sql;
select cats(libname, ".",memname) into :names separated by " "
from dictionary.tables
where upcase(libname) = "MYLIBNAME";
quit;
但是当我写入 %PUT Data sets: &names;
时,日志文件中什么也没有出现,并且我收到一条错误消息,指出宏 names
未解析。知道这里出了什么问题吗?
MYLIBNAME
是无效的库引用。 Libref 最多有 8 个字符。 MYLIBNAME 是 9 个字符,因此在您的 SAS 会话中将没有定义的库引用可以匹配它。
如果您尝试 libname = "WORK"
或 libname = "SASHELP"
会发生什么?宏变量 names
将被填充。
小心包含数千个表的库。一个宏变量的长度只能是 64K-2 个字符。
@Richard 的回答很完美。如果仍然无法正常工作,请执行以下操作。
尝试 outobs =1,只是检查有无 where 子句
proc sql outobs= 1; select cats(libname, ".",memname) into :names separated by " " from dictionary.tables where upcase(libname) = "SASHELP"; quit; %put &names;
使用 proc 内容,然后连接。如果您的宏变量长于 65534
,它将在下一步中显示错误PROC CONTENTS DATA=SASHELP._ALL_ out= new(keep=memname libname) noprint; RUN proc sql; select cats(libname, ".",memname) into :names separated by " " from new;