前幾天編寫一個儲存過程,需要訪問遠端資料庫的欄位,於是建立一個dbLink並建了同義詞:
CREATE PUBLIC DATABASE LINK orcl@dbc CONNECT TO orcl IDENTIFIED BY orcl USING `orcl`; CREATE SYNONYM mtb FOR mytable@orcl@dbc;
這裡之所以用orcl@bdc為dblink的名稱是為了設定global_names=true。
然後新建一個儲存過程呼叫該同義詞:
v_result mtb.sid%type;
呼叫後發現提示:錯誤:PLS-00201: 必須宣告識別符號 `MTB.SID`;
經過多番查詢發現確實是因為身份原因,這裡需要注意一定要在被訪問的資料庫中賦予許可權,具體程式碼如下:
grant select on mytable to orcl;--orcl為使用者名稱
然後就編譯通過了。