可以先执行select * from dba_db_links where..查找
如果recordsetcount=0就执行create

解决方案 »

  1.   

    select count(*) into v_num from all_db_links where db_link=upper(oop.world);
    if v_num=0 then
      execute immediate 'create database link ...';
    end if;
      

  2.   

    先select出来就是我现在做的,不行的,最后会共享冲突还是死锁造成异常。
    我每次执行结束都用了 drop来清除了,如果重新启动程序,
    我每次都是先select...
     如果记录>0,则先drop,然后create,操作完后退出程序前又drop掉。
    很正常,然后再次启动程序,断点调试,记录不等0了,create发生异常。
      

  3.   

    为什么要>0的时候drop?=0的时候创建不更合适吗
      

  4.   

    原因总算找到了。每次输入的databaselink是小写。
    select 的时候它只管大写。