2013-02-28 69 views
6

我正在增强现有的Java应用程序。在2个不同的DB2数据库中有数据。该应用程序已经从2个不同的数据库获取数据,但它总是从一个然后另一个进行查找。有没有办法使用一个SQL SELECT连接来自2个不同DB2数据库的数据?我可以从2个不同的DB2数据库中加入数据吗? (像SQL Server连接数据库)

这是我的尝试:

CREATE ALIAS remote_orders FOR remote_db.schema.orders; 

select * 
from myid.remote_orders a 
inner join local_schema.parts b on (a.key = b.key) 
with ur FETCH FIRST 200 ROWS ONLY 

我得到这个错误:

STATEMENT REFERENCE TO REMOTE OBJECT IS INVALID. SQLCODE=-512, SQLSTATE=56023, DRIVER=4.14.113 

我可以做一个临时表的东西吗?我可以没有任何错误运行这个选择,但它并不能帮助我......(但)

select * 
from myid.remote_orders 
with ur FETCH FIRST 200 ROWS ONLY 

编辑:

一个DB2 Temp Table可能的帮助。我能够创建一个。现在我需要(睡觉)并尝试选择它,然后做我的加入。

+1

如果你把一部分可以碰上一个子查询,并加入了吗? – 2013-02-28 02:56:46

+0

不错的想法,但我尝试使用'where exists'子选择同样的错误结果。 – Jess 2013-02-28 03:24:51

+0

我不认为临时表的想法会起作用。问题是会话是连接特定的。如果要编写代码以选择临时表,然后将连接更改为不同的模式,则临时表将不再可用,因为您将获得新的会话。 – Jess 2013-07-01 19:52:15

回答

1

使用完全合格的名称<database>.<user/schema>.<tablename>

类似:

select * 
from DB1.myid.remote_orders a 
inner join DB2.local_schema.parts b on (a.key = b.key) 
with ur FETCH FIRST 200 ROWS ONLY 
+0

你有没有尝试上面的'select'?我得到了同样的错误,'对远程对象的声明引用无效。 SQLCODE = -512,SQLSTATE = 56023,DRIVER = 4.14.113' – Jess 2013-02-28 04:43:57

+3

您的服务器是否配置为允许联合服务?应该为此查询启用“联合”工作。 – 2013-02-28 04:50:16

+0

@MayurManani您在答案中没有提及任何关于联合服务的内容。因此,这不是一个完整的答案。 – 2014-06-26 17:41:14