日期:2014-05-17  浏览次数:20852 次

问下,,ORACLE里面什么时候用COMMIT啊?
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啊? 有没有资料,,或者举几个例子啊?

------解决方案--------------------
做DML的时候需要COMMIT:insert,update,delete;for example:

update table set name='xxg' where id=1; commit;

做查询的时候不用:select xxx from yyy;
------解决方案--------------------
commit就是提交,修修改改以后,确认了就提交了,想反悔了就rollback。
如果提交了以后,想反悔,难度就要要大一点了。
另一方面,个人感觉提交以后其他人就可以同步看到您的修改结果了。
一般在SQLPlus中单句增删改不需要提交,感觉会自动提交。
在编程的时候,为了业务的完整性,通常要求一系列的操作,一系列都成功或者都失败。
这时候一般要使用事务来批量处理,事务结束时一次提交。
结论:没有事务时自动commit,不需要手工显式提交。有事务时需要手工提交。
------解决方案--------------------
a.执行会影响到数据变动的dml时一般需手动commit的
尤其是你执行select ... for update; 锁定表行时,更需尽快结束掉当前事务,不然另外的会话中
若也需更新此行记录,则会处于等待状态
b.存储过程中一般都需要的
c.loop循环内的dml(insert,update,delete)语句,一般会在循环外执行commit
d.如果你在sqlplus中执行dml语句时,当执行一条dcl或ddl语句,你前面执行的dml语句操作的内容会自动
提交

具体的你到实际应用中就清楚了