【发布时间】:2015-04-24 11:21:42
【问题描述】:
我有一个程序,我经常在 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_Flag Y 更新表的一些记录,批处理可以正常工作一段时间,然后在几天后再次出现同样的问题。
请帮忙,如果提到的表格也需要数据,请告诉我。
【问题讨论】:
-
你为什么有
EXIT WHEN CUR_INTERFACE_EMP%NOTFOUND? FOR 游标循环在处理完所有记录后将自动退出循环,如果游标没有获取任何记录,则根本不会进入循环。如果没有看到 FOR 循环的完整代码,就无法说明问题所在。您是否在 for 循环中对游标中引用的表进行任何删除/更新?
标签: oracle plsql oracle11g cursor