2013-02-28 100 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

相關問題