日期:2014-05-17  浏览次数:20814 次

咨询一个存储过程中调用dblink的问题
存储过程中有段代码

iv_temp_tab := 'temp_0407@dblink'; ----这是一个远程表。

当我insert本地一个表的时候出问题
insert into tmp_local
select * from iv_temp_tab;
报错 表或者视图不存在。请教一下大家,这个地方该如何写,因为这个表明会变动,所以我只能这么写。
也就是在催出过程中如何调用已经设置成变量的远程表。

------解决方案--------------------
 
iv_temp_tab := 'temp_0407@dblink'; ----这是一个远程表。
v_sql long; 
 
v_sql:='insert into tmp_local
select * from ''
------解决方案--------------------
iv_temp_tab
------解决方案--------------------
''';

 如果是动态的上面就不要写死!直接写成入参的形式
------解决方案--------------------
execute immediate 'insert into tmp_local
select * from '
------解决方案--------------------
iv_temp_tab;


正规系统不要动不动用dblink,自己做接口表或者程序接口同步数据,两边事务不一致会把自己玩死的,稍微大点数据量也会很惨。