龙浩lh40 发表于 2012-03-12 09:12

游标嵌套游标,为什么内层游标读取不到数据?

我写的是PRO*C程序,要先用外层游标查询出一些字段,再根据这些字段进行进一步查询。就是我需要建立一个表,然后表中有子表。于是我选择了游标嵌套游标的算法。可是,现在发觉外层游标的数据能读取到,可是在内层游标的时候SQLCODE一直返回1403,读取不到任何数据~~~~~ 可是事实上是应该有数据的

moon38sun 发表于 2012-03-12 15:09

游标嵌套游标的大致结构可以贴一下吗?
声明位置,打开位置等等

龙浩lh40 发表于 2012-03-12 15:17

回复 2# moon38sun
可以。

DECLARE CUR1;

OPEN CUR1;

WHILE(1){
      FETCH CUR1;
      DECLARE CUR2;
      OPEN CUR2;
      WHILE(1)
      {
         FETCH CUR2;
       }
       CLOSE CUR2;

}
CLOSE CUR1;

外层游标的值是能取到的。然后根据外层游标取到的某些字段值来进行内层游标查询数据。在内层游标FETCH数据的时候判定SQLCODE总是1403.可是事实上数据库是有数据的。


   

moon38sun 发表于 2012-03-13 09:13

我这边不是PRO*C,在PRO*COBOL里面按照你的结构试验了一下,可以正常取到数据。
应该可以排除结构的问题,请确认细节:
CUR1 FETCH到的内容,作为CUR2的检索条件的时候,在SQL*PLUS是否能正常取得数据?

龙浩lh40 发表于 2012-03-13 15:34

回复 4# moon38sun


   
确认过在PL中能查询到数据~~~~~~~~~


现在问题更加复杂化了 在内层游标的打开的时候直接返回 -1036 或者911 错误了~~~~~~~~

moon38sun 发表于 2012-03-13 23:00

对于上面的结构返回1403的情况,怀疑可能是SQLCA没有进行初期化,或者给SQLCA赋值消耗时间过长,导致你看到的不是最新的sqlcode,还是上一个操作的sqlcode。

龙浩lh40 发表于 2012-03-14 15:54

回复 6# moon38sun


    上一个没报错 于是肯定是0
页: [1]
查看完整版本: 游标嵌套游标,为什么内层游标读取不到数据?