事实上如果你不在过程中加事务语句的话(commit rollback),oracle把存储过程调用看作是一条原子语句,oracle会在调用过程前隐式加上一个savepoint
也就是如果你调用此过程的事务commit,就会提交,rollback过程中的执行也会回滚只有commit的时候才调用此存储过程。??
不明白,调用了就调用了,commit是使修改永久化,就象一条sql语句一样,你不能等你commit时才执行这条语句吧我的一点理解,欢迎指正!

解决方案 »

  1.   

    “只有commit的时候才调用此存储过程。??
    不明白,调用了就调用了,commit是使修改永久化,就象一条sql语句一样,你不能等你commit时才执行这条语句吧”
    比如执行dbms_job.submit(...)以后,只有执行了commit,这条语句才会放到job queue里面等待执行,如果没有执行commit,你在user_jobs里面是看不到这个job的。但是如果你执行了util_file的写文件操作,即使你没有执行commit,文件实际上也已经被改写了。
    不知道我说的意思你理解了没有?
      

  2.   

    to jiezhi(浪子) :能否举个例子