如何解决oracle中的取数无序问题?

如何解决oracle中的取数无序问题?,oracle,plsql,oracle11g,cursor,Oracle,Plsql,Oracle11g,Cursor,我有一个在oracle 11g中经常出现以下错误的过程: ORA-01002: fetch out of sequence ORA-06512: at "LEAVE.GES_ERP_LEV_FFS_INTERFACE_PRC", line 350 ORA-06512: at line 1. 在第350行我有- BEGIN FOR V_INTERFACE_EMP IN CUR_INTERFACE_EMP LOOP (Line 350) EXIT WHEN CUR

我有一个在oracle 11g中经常出现以下错误的过程:

ORA-01002: fetch out of sequence ORA-06512: 
at "LEAVE.GES_ERP_LEV_FFS_INTERFACE_PRC", line 350 ORA-06512: at line 1.
在第350行我有-

BEGIN

  FOR V_INTERFACE_EMP IN CUR_INTERFACE_EMP LOOP        (Line 350)
      EXIT WHEN CUR_INTERFACE_EMP%NOTFOUND;
      V_ERR_FLAG  := 'N';
      V_LOCAL_EMP := 'Y';

      BEGIN
游标CUR_INTERFACE_EMP声明如下

SELECT GELF.*
   FROM GES_ERP_LEV_FFS_INTERFACE_T GELF
 WHERE (GELF.BALANCE_FLAG != 'W' 
         OR GELF.CASE_FLAG = 'S' 
         OR SELF.BALANCE_FLAG IS NULL)
    AND GELF.PROCESS_FLAG = 'N'
    AND GELF.DATE_OF_RELEASE <= TRUNC(SYSDATE);
如果我用Process_标志Y更新表中的一些记录,批处理会在一段时间内正常工作,然后在几天后再次出现相同的问题

请帮助,让我知道的情况下,数据也需要为上述表格

如果我用Process_标志Y更新表中的一些记录,则批处理 在一段时间内效果很好,几天后我们得到了这个 同样的问题

您尝试从“选择更新”获取,但在此之前已发出提交

我认为循环中的某个地方有一个COMMIT,它导致了这个问题

Tom Kyte的一句话:

该隐式游标是从提交中提取的。它是 提交后保持光标打开的练习。这是一个坏消息 实践证明,ORA-1555是上述循环的常见原因 特别构造

此外,您正在使用游标进行循环。循环的游标将在游标中的所有记录都已获取时终止。因此,您不需要显式退出

您可以简单地执行以下操作:

FOR V_INTERFACE_EMP IN CUR_INTERFACE_EMP 

   LOOP        

     V_ERR_FLAG  := 'N';
     V_LOCAL_EMP := 'Y';
     ...
   END LOOP;
如果我用Process_标志Y更新表中的一些记录,则批处理 在一段时间内效果很好,几天后我们得到了这个 同样的问题

您尝试从“选择更新”获取,但在此之前已发出提交

我认为循环中的某个地方有一个COMMIT,它导致了这个问题

Tom Kyte的一句话:

该隐式游标是从提交中提取的。它是 提交后保持光标打开的练习。这是一个坏消息 实践证明,ORA-1555是上述循环的常见原因 特别构造

此外,您正在使用游标进行循环。循环的游标将在游标中的所有记录都已获取时终止。因此,您不需要显式退出

您可以简单地执行以下操作:

FOR V_INTERFACE_EMP IN CUR_INTERFACE_EMP 

   LOOP        

     V_ERR_FLAG  := 'N';
     V_LOCAL_EMP := 'Y';
     ...
   END LOOP;

当找不到当前接口EMP%时,为什么要退出?FOR Cursor循环在处理完所有记录后将自动退出循环,如果游标没有获取任何记录,则根本不会进入循环。如果没有看到for循环的完整代码,就不可能说明问题所在。您是否在for循环中对游标中引用的表执行任何删除/更新操作?当CUR\u INTERFACE\u EMP%NOTFOUND时,为什么要退出?FOR Cursor循环在处理完所有记录后将自动退出循环,如果游标没有获取任何记录,则根本不会进入循环。如果没有看到for循环的完整代码,就不可能说明问题所在。您是否在for循环中对游标中引用的表执行任何删除/更新操作?感谢您的回复,Commit在循环中,但在异常部分。然而,我不是每天都收到这个问题,每月一次,这个问题来了。这就是为什么我们无法跟踪它。如果您能提供帮助,我将不胜感激。您的答案在我在答案中提供的asktom链接中。感谢您的回复,Lalit,Commit在循环中,但在异常部分。然而,我不是每天都收到这个问题,每月一次,这个问题来了。这就是为什么我们无法跟踪它。如果你能帮忙,我会很高兴的。我在答案中提供的asktom链接中有你的答案。