【发布时间】:2019-04-01 19:59:53
【问题描述】:
我需要使用 SAS 直通工具查询服务器 (REMOTE_TBL) 中的一个大表。为了使查询更短,我想发送从本地表 (LOCAL_TBL) 中提取的 ID 列表。
我的第一步是使用 INTO 语句将 ID 放入名为 id_list 的变量中:
select distinct ID into: id_list separated by ',' from WORK.LOCAL_TBL
然后我将这些 ID 传递给传递查询:
PROC SQL;
CONNECT TO sybaseiq AS dbcon
(host="name.cl" server=alias db=iws user=sas_user password=XXXXXX);
create table WANT as
select * from connection to dbcon(
select *
from dbo.REMOTE_TBL
where ID in (&id_list)
);
QUIT;
代码运行良好,但我收到以下消息:
The length of the value of the macro variable exceeds the maximum length
有没有更简单的方法可以将选定的 ID 发送到直通查询? 有没有办法将选定的 ID 存储在两个或多个变量中?
【问题讨论】:
-
您可能必须将其分解为单独的宏变量。
-
关于那些与 REMOTE_TBL 相关的子集 ID 的任何信息?它们是来自那个表还是另一个表。大的
IN()可能存在性能问题。
标签: sas sas-macro proc-sql pass-through