请问在Pro*C中一次FETCH游标的最大数量取决于什么条件(AIX环境)。
我有一支程序如果一次取5万条没问题,可是如果把这个数量加大到15万笔,程序就会报段错误.
谢谢!!!

解决方案 »

  1.   

    估计不是oracle的问题,你的pro*c不能支持吧?
      

  2.   

    代码很简单,就是打开一个游标,再FETCH,然后再处理,最后插入另一表中#define MAX_NUM 50000EXEC SQL BEGIN DECLARE SECTION;
    char   act_no[MAX_NUM][22+1];  /*帐号*/
    int    ct_no[MAX_NUM];         /*存单号*/
    char   prod_code[MAX_NUM][11+1];/*产品代码*/
    char   id_no[MAX_NUM][20+1];    /*客户号*/
    char   curr_code[MAX_NUM][3+1]; /*币别*/
                    .......
                    int    fetch_num;
    EXEC SQL END DECLARE SECTION;EXEC SQL DECLARE curs01 CURSOR FOR
    SELECT  act_no,ct_no,prod_code,id_no,curr_code......
    FROM    xxxxx;fetch_num = MAX_NUM;
    EXEC SQL OPEN curs01;
    while(1)
    {
           EXEC FOR :fetch_num FETCH curs01  INTO :act_no,:ct_no,:prod_code,:id_no,:curr_code......
           
           ....
           if (cursor fetch end)
                break;
            ...
    }
    ....代码基本意思是这样的,如果把MAX_NUM再加大到100000时,程序编译时没问题,但执行时就报段错误。我在编译中已经加了
    -q maxmem=-1