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

解决方案 »

  1.   

    -- 直接这样不就完了?
    insert into tmp_local select * from temp_0407@dblink;
      

  2.   

    表明会变动,就用动态SQL语句!
      

  3.   

     
    iv_temp_tab := 'temp_0407@dblink'; ----这是一个远程表。
    v_sql long; 
     
    v_sql:='insert into tmp_local
    select * from ''||iv_temp_tab||'''; 如果是动态的上面就不要写死!直接写成入参的形式
      

  4.   

    execute immediate 'insert into tmp_local
    select * from '||iv_temp_tab;正规系统不要动不动用dblink,自己做接口表或者程序接口同步数据,两边事务不一致会把自己玩死的,稍微大点数据量也会很惨。