读书人

双层游标循序导致ORA-01001异常的解

发布时间: 2012-07-15 20:11:40 作者: rapoo

双层游标循序,导致ORA-01001错误的解决方法

下面的代码是双层游标循环:

?

  EXEC SQL PREPARE stat_ifinfo FROM :ifinfoSQL;    EXEC SQL DECLARE cur_ifinfo CURSOR FOR stat_ifinfo;EXEC SQL OPEN cur_ifinfo USING :tpStr, :passTypeStr;    /* 接口定义表的游标声明、定义与打开                                                               */    EXEC SQL PREPARE stat_msgno FROM :msgnoSQL;    EXEC SQL DECLARE cur_msgno CURSOR FOR stat_msgno;    EXEC SQL WHENEVER NOT FOUND DO BREAK;//当循环时,没有数据则break.此语句要写在循环语句上面    for(;;){        EXEC SQL FETCH cur_ifinfo INTO :IFCodeStr :ind_IFCode;                 ......        if(strcmp(IFCodeStr, "") != 0){            EXEC SQL OPEN cur_msgno USING :IFCodeStr;            for(;;){                EXEC SQL FETCH cur_msgno INTO :i_dataitem, :msgnoStr, :msgposStr, :msglenStr;                            }            //EXEC SQL CLOSE cur_msgno;此处关闭将会导致无效游标的错误        }else{            .....        }    }    EXEC SQL CLOSE cur_msgno;    EXEC SQL CLOSE cur_ifinfo;    EXEC SQL WHENEVER NOT FOUND CONTINUE;//需变更回<NOT FOUND>的处理方式
?

关闭游标需要在二层遍历游标之外。

读书人网 >其他数据库

热点推荐