2017-08-03 176 views
1

下面我创建数据集table_db1:使用在SAS外部数据直通

proc sql; 
CONNECT TO ORACLE (DB1 details); 
CREATE TABLE table_db1 AS SELECT * FROM CONNECTION TO ORACLE 
(select * from db1.table where rownum<10); 
quit; 

我想用这个数据集执行连接从另一个DB2数据。我更喜欢pass-through,因为它允许我使用WITH子句。我的第一次尝试没有成功运行,因为传递查找DB2中的table_db1。请提出解决方法。

proc sql; 
CONNECT TO ORACLE (DB2 details); 
CREATE TABLE table_db1 AS SELECT * FROM CONNECTION TO ORACLE 
(select * from db2.table2 a inner join table_db1 b 
on a.var_name = b.var_name 
where rownum<10); 
quit; 
+0

传递代码完全在DBMS上运行。您需要与DBA谈谈在数据库之间传输数据或从一个数据库连接到另一个数据库的问题。 – david25272

回答

2

传递意味着SAS只是简单地向外部DBMS发送代码。所以如果你的外部数据库管理系统可以连接到另一个数据库,那么它可以(也许)在传递中进行。

一般来说,尽管如此,不能,你不能使用这种方式。如果您打算要求SAS处理数据库连接,则需要使用Libname方法。