既然你知道DBLINK,那不就直接在UA下用UB的 Procedure了
  DECLARE
    RET NUMBER;
  BEGIN
     RET :=UB@DB_LINK_NAME.ProcedureNAME;--具体@DB_LINK_NAME放什么位置你在试下
  END;

解决方案 »

  1.   

    DECLARE
      RET NUMBER;
    BEGIN
      RET :=UB@DB_LINK_NAME.ProcedureNAME;--具体@DB_LINK_NAME放什么位置你在试下
    END;
    ---------------------------------
    这种方法我试过但不行。它会把@这个符号后面的字符(@DB_LINK_NAME.ProcedureNAME)都认做是Db_Line_Name,系统报错。初步想这不是分布式技术问题,可能是一个叫做multi-session的问题但怎么用,却找不到相应的资料。
      

  2.   

    你可以先建一個dblink的同意詞看看,會不會有錯呢!
      

  3.   

    如果我访问的是表,那么我就可以建立同义词,但我现在访问的对象是Procedure、Function或Package,请问也能创建同义词嚒?可以的话又怎么创建呢?
      

  4.   

    这个问题都挂在这里两天了,再没人来顶,我怕我自己也快"挂"了!:(其实我也有个解决方案,就是把Procedure、Function或Package创建在本地数据库,但里面处理的是远程数据库的Table或者View。这样就可以解决了,但好象客户不怎么同意,TMD!!!
    所以还是要尽力找其他方法。
      

  5.   

    是报Database Link Name不存在的错误啊,因为它把"@"这个符号后面的所有字符(@DB_LINK_NAME.ProcedureNAME)都认做是Db_Line_Name,当然是不存在啦!http://otn.oracle.com 
    大家有空看看这个网站,有什么心得再来这讨论!看能否找到解决问题的方法?
      

  6.   

    你那样写肯定是要报错的啦
    这种做法只有通过建立数据库链接来实现
    看来你是没有理解database link的真正用法
    你创建的时候本来就已经说明了是以哪个用户连接的啦
    就不需要再多次依据的把用户标出来
    这样就ok了,表/存储过程/等@你的数据库链接名字