以下代码是PRO*C的部分代码:代码1:EXEC SQL EXECUTE                                                 
        BEGIN                                                            
                STAT.proc_stat(:start_time, :end_time, :list_curs);          
                :ret_db:=0;                                                  
        EXCEPTION                                                        
                WHEN OTHERS THEN                                             
                        :ret_db:=1;                               
        END;                                                             
END-EXEC;         调用存储过程, 经测试统计一天的结果的话,可能这部分代码耗时 2 3秒钟代码2:rs_count = 0;    //最终返回游标取值的总记录条数
count = 0;
ARRAY_SIZE = 1000;size = ARRAY_SIZE ;
*p_gos = (struct g_stat *)malloc(sizeof(struct g_stat)*size);EXEC SQL WHENEVER NOT FOUND DO BREAK; 
                        while(1){
                                
                                EXEC SQL FETCH :list_curs INTO :db_gos:ind_db_gos;
                                bcopy(db_gos, *p_gos + (ARRAY_SIZE*count), sizeof(struct g_stat)*ARRAY_SIZE);
                                
                                
                                count++;
                                printf("count: %d\n", count);   //打印次数
                                  
                                size += ARRAY_SIZE;  
                                rs_count = sqlca.sqlerrd[2];
                                
                                *p_gos = (struct g_stat *)realloc(*p_gos, sizeof(struct g_stat)*size); 
                                           
                        }
                        if(*p_gos != NULL){
                                bcopy(db_gos, *p_gos + (ARRAY_SIZE*count), sizeof(struct g_stat)*(sqlca.sqlerrd[2]-rs_count));
                                rs_count = sqlca.sqlerrd[2];
                        }
                        EXEC SQL CLOSE :list_curs; 
                        EXEC SQL FREE :list_curs;  db_gos和p_gos都是结构g_stat变量,ind_db_gos是结构指示变量。现在遇到的问题是,在调用此PRO*C时,统计一天的结果的时候,在代码1用掉了2、 3秒钟的时间,
可是在进去循环取游标值的时候,在printf("count: %d\n", count);   //打印次数 为 1的时候,就这段时间用了10多分钟,count = 2,count =3时候用的时间几乎可以忽略不计。
最后总共返回了3000多条数据。郁闷在于我查数据才用了几秒钟,把数据取出来却用了10多分钟的时间,实在找不出什么问题出来,忘高手解释或者提供下解决方法!