jiaojiao0427 发表于 2009-10-10 21:25

请教高人db2动态查询的问题~!急

------------------------------------------------------------------------

程序主要部分:

    EXEC SQL BEGIN DECLARE SECTION;
   
      char    sql;

    EXEC SQL END DECLARE SECTION;
   
    structsqlda *sqldaptr;
    int   precision =0, memsize, i, j=0;
   
    sqldaptr=(struct sqlda *)malloc(SQLDASIZE(1));
    sqldaptr->sqln=100;
    SETSQLDOUBLED(sqldaptr, SQLDOUBLED);
   
    memset(sql, 0, sizeof(sql));
   
    EXEC SQL WHENEVER SQLERROR GOTO ERR_OUTER;
         
    EXEC SQL PREPARE qq FROM :sql;
      
    EXEC SQL DESCRIBE qq into :*sqldaptr;
      
    if(sqldaptr->sqld == 0){
      
            printf("The SQL is not valid !");
    }
   
    EXEC SQL DECLARE cc CURSOR FOR qq;
      
    EXEC SQL OPEN cc;
   
    for(i=0; i<sqldaptr->sqld; i++){
      
      if(sqldaptr->sqlvar.sqltype%2 == 1)
            sqldaptr->sqlvar.sqlind=(short *)malloc(2);

      printf("sqltype[%d]:%d", i, sqldaptr->sqlvar.sqltype);
         
      switch(sqldaptr->sqlvar.sqltype){
            
            /* 这里确定数据类型只有485和453两种 */

            case 485:    //485
                precision = ((char *)&(sqldaptr->sqlvar.sqllen));
                sqldaptr->sqlvar.sqldata = (char *SQL_POINTER)malloc ((precision + 2) /2);
                memsize = (precision +2) /2;
                break;
               
            default:    //453
                sqldaptr->sqlvar.sqldata = (char *SQL_POINTER)malloc(sqldaptr->sqlvar.sqllen);
                memsize = sqldaptr->sqlvar.sqllen;
                break;
      }
   
      memset(sqldaptr->sqlvar.sqldata,'\0',memsize);
      
    }

    EXEC SQL CLOSE cc;

    printf("End");

------------------------------------------------------------------------------------------------
现在的问题是:

连接数据库后,第一遍调用这段程序时返回正常的查询结果,第二遍调用时则返回异常,打印出来的sqltype,有的竟然为0,是为什么?

请教高人,感激不尽~!!!

[ 本帖最后由 jiaojiao0427 于 2009-10-10 21:26 编辑 ]
页: [1]
查看完整版本: 请教高人db2动态查询的问题~!急