如果但就执行
insert into bonus nologging (ename) select ename from scott.bonus@linkehr;
commit
是没错的但是我放到存储过程中,拼接语句执行时会报错
ORA-00942: 表或视图不存在
ORA-02063: 紧接着 line (起自 LINKEHR)
这是存储过程
CREATE OR REPLACE package body SCOTT.iniData
is
procedure iniEhr(
p_ehrtable in varchar2,
p_ehrcol in varchar2,
p_kimstable in varchar2,
p_kimscol in varchar2
)
is
v_sql varchar2(2000):='';
begin
v_sql:='insert into '||p_kimstable||' nologging ('||p_kimscol||')select '||p_ehrcol||' from '||p_ehrtable||'@linkehr';EXECUTE IMMEDIATE v_sql;
commit; end;
end iniData;
/
为什么会这样?
insert into bonus nologging (ename) select ename from scott.bonus@linkehr;
commit
是没错的但是我放到存储过程中,拼接语句执行时会报错
ORA-00942: 表或视图不存在
ORA-02063: 紧接着 line (起自 LINKEHR)
这是存储过程
CREATE OR REPLACE package body SCOTT.iniData
is
procedure iniEhr(
p_ehrtable in varchar2,
p_ehrcol in varchar2,
p_kimstable in varchar2,
p_kimscol in varchar2
)
is
v_sql varchar2(2000):='';
begin
v_sql:='insert into '||p_kimstable||' nologging ('||p_kimscol||')select '||p_ehrcol||' from '||p_ehrtable||'@linkehr';EXECUTE IMMEDIATE v_sql;
commit; end;
end iniData;
/
为什么会这样?
或者尝试用调用者权限模式authid current user
同时你的sql
select ename from scott.bonus@linkehr;
前面的 scott 没有必要加,因为dblink中应该有连接的用户名和密码。
我对oracle不熟,怎么做?