ITPub博客

首页 > 数据库 > Oracle > ORA-12838的问题

ORA-12838的问题

原创 Oracle 作者:david3389 时间:2010-07-06 13:59:23 0 删除 编辑
今天写了一段PL/SQL代码,极其简单,却让我愣了一下[@more@]

begin
for i in 1 .. 24 loop
insert /*+ APPDEND*/
into ttt_2
select t_seq_2.nextval, a.* from dba_objects a;
end loop;
commit;
end;

看似没什么错,对不?其实不是的,当你运行上面的逻辑时,就会出现ORA-12838的错误,原因是加了APPEND以后必须立刻提交,才可以对表进行第二次操作,操作包括SELECT和DML。在循环中,一次循环就是一次DML,24次循环实际上是要做24个DML操作,那么,COMMIT换一下位置就好了。

begin
for i in 1 .. 24 loop
insert /*+ APPDEND*/
into ttt_2
select t_seq_2.nextval, a.* from dba_objects a;
commit;
end loop;
end;

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/16628454/viewspace-1034986/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-11-17

  • 博文量
    19
  • 访问量
    120527