前幾天編寫一個存儲過程,需要訪問遠程資料庫的欄位,於是建立一個dbLink並建了同義詞: 這裡之所以用orcl@bdc為dblink的名稱是為了設置global_names=true。 然後新建一個存儲過程調用該同義詞: v_result mtb.sid%type; 調用後發現提示:錯誤:PLS-0 ...
前幾天編寫一個存儲過程,需要訪問遠程資料庫的欄位,於是建立一個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為用戶名
然後就編譯通過了。