begin
  update test1 t set t.value = '22' where t.id =2;
  if sql%found then
    dbms_output.put_line('修改成功');
    commit;
  else
    dbms_output.put_line('修改失败');
  end if;
end;如题,,,ORACLE一般什么时候用COMMIT啊?    有没有资料,,或者举几个例子啊?

解决方案 »

  1.   

    做DML的时候需要COMMIT:insert,update,delete;for example:update table set name='xxg' where id=1; commit;做查询的时候不用:select xxx from yyy;
      

  2.   

    commit就是提交,修修改改以后,确认了就提交了,想反悔了就rollback。
    如果提交了以后,想反悔,难度就要要大一点了。
    另一方面,个人感觉提交以后其他人就可以同步看到您的修改结果了。
    一般在SQLPlus中单句增删改不需要提交,感觉会自动提交。
    在编程的时候,为了业务的完整性,通常要求一系列的操作,一系列都成功或者都失败。
      这时候一般要使用事务来批量处理,事务结束时一次提交。
    结论:没有事务时自动commit,不需要手工显式提交。有事务时需要手工提交。
      

  3.   

    a.执行会影响到数据变动的dml时一般需手动commit的
    尤其是你执行select ... for update; 锁定表行时,更需尽快结束掉当前事务,不然另外的会话中
    若也需更新此行记录,则会处于等待状态
    b.存储过程中一般都需要的
    c.loop循环内的dml(insert,update,delete)语句,一般会在循环外执行commit
    d.如果你在sqlplus中执行dml语句时,当执行一条dcl或ddl语句,你前面执行的dml语句操作的内容会自动
    提交具体的你到实际应用中就清楚了