大哥们好!
  我在oracle中写了一个存储过程PROA,里面有很多的insert/update操作,然后别人会调用到我写的这个存储过程! 我是应该在这个存储过程里写一句commit 提交所有事物,还是不管,让调用的人去提交事物!
还有如果我写了commit提交事物,他们再次commit 会不会出问题呀? 
 谢谢了! 帮小弟指点下迷津吧!!

解决方案 »

  1.   

    是你自己commit,还是外部再commit,取决于外部调用代码是否还要继续进行同一事务处理。
    如果没有,在存储过程中commit;
    如果你存储过程只是一个事务中的一环,不要commit;多次commit不会带来错误。
      

  2.   

    如果你的代码给别人调用的话,事务处理最好交给对方去做,曾经使用过带commit的接口存储过程,真是苦不堪言.
      

  3.   

    建议自己玩的时候加上commit,放测试上时去掉就是了.
      

  4.   

    如果的你的过程是要给别人调用的话还是让调用的人去处理多次commit不会带来错误
      

  5.   

    貌似也是哦看实际需求吧,如果只是一个环节 就不需要commit
      

  6.   

    你若commit会把执行存储过程之前的sql也commit掉。
    若你不想这样,就不要commit,而由调用这处理,一般都是这样的。
    若你想只是commit存储过程本身而不commit前面的sql,那你可以用 progma autonomous_transaction来表示这个存储过程是一个自治事务,不过一般这种情况很少很少。
      

  7.   

    其实我之前就是怕 多次commit 会出错! 既然不会出错就好! 
    呵呵 不过 我还是没有 在存储过程里 commit ! 事物应该由最外层调用者提交才对!!!  再次感谢了!!