- 论坛徽章:
- 0
|
------------------------------------------------------------------------
程序主要部分:
EXEC SQL BEGIN DECLARE SECTION;
char sql[1024];
EXEC SQL END DECLARE SECTION;
struct sqlda *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))[0];
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:25 编辑 ] |
|