Oracle DB Link的Table異動欄位但呼叫端Procedure/Pkg抓不到異動後欄位

  • 3350
  • 0
  • 2013-09-11

Oracle DB Link的Table異動欄位但呼叫端Procedure/Pkg抓不到異動後欄位

DotBlogs Tags:

純筆記,也分享給可能有類似問題的人,自己在工作上,已經遇到三次了,因為之前沒記錄,每次發生都跟鬼打牆一樣試半天,才找到解法。

環境:Oracle 11GR2

首先,建立一個 DB Link,叫 DLTEST,然後在裡面開一個 Table 叫 LEO_TEST,有兩個欄位:AAA、BBB。

在呼叫端,建立個 Procedure,直接 Insert 資料到 LEO_TEST@DLTEST:

141020

順利編譯完成。接著,把 LEO_TEST 加入第三個欄位 CCC:

141105

然後調整 Procedure 加入第三個欄位 CCC,重新編譯,結果就失敗了:

141144

原因是:

141802

實際上 CCC 欄位已存在,但怎樣都編譯不過,最後找到的解法是,先把 DB Link 那邊的 Table 改名,然後重新編譯呼叫端的 Procedure,當然會發生錯誤,接著再把資料表名稱改回來,重編譯呼叫端的 Procedure,就可以順利編譯完成。

原因不明,我也沒再細追。

有其他解法,也請務必告訴小弟,謝謝。

--------
沒什麼特別的~
不過是一些筆記而已