如果 他们的存储过程有commit语句,调用确实会报错,不过你可以使用自治事务来调用,或者让他们把存储过程改成自治事务的,都可以解决

解决方案 »

  1.   

    job可以调用有commit的过程啊。 
      

  2.   

    dbms_job.run可以用来执行指定的job如果要在一个数据库中调用另一个数据库的存储过程,通过database link来操作即可。存储中包含commit也是可以调用的,只不过要注意的是,不管是本地发出的commit还是远程数据库的存储过程中包含的commit,都会进行两阶段提交
      

  3.   

    调用的是远程数据库的过程 那过程带有commit  执行到的时候会直接提交 下面的不会再继续执行了
    在别的帖子中看到可以使用远程调用job的方式让该过程在本地先执行 
    但语句不会用 所以来问下的
      

  4.   

    我的意思是想知道怎么开启远程数据库上的job
    或者创建一个远程数据库上的job并且只让他执行一次
      

  5.   

    检查一下,如果远程的存储过程的代码里面,在中间commit以后,最后也有commit,应该还是能够正常提交的
      

  6.   

    跟过的 过程里一个insert后的commit后就直接返回了 后面的不再继续下去了
      

  7.   

    我这边测试没问题
    分布式事务的处理还是有很多局限性。使用job来调用倒是没试过
    要这么做的话可以试试,在远程数据库上建个job来调用存储过程,然后在远程数据库中再创建一个存储过程,该存储过程使用dbms_job.run来调用job
    然后在本地创建一个dblink,通过dblink调用前面创建的存储过程实际上,通过远程数据库来调用,绕了个大弯,是否真有必要