程序中有一段代码,是做数据的批量抽出,每循环一次抽出5000条数据,但当第一次抽出返回的sqlca.sqlcode=1405的时候,发生了一个很奇怪的问题,就是第一次的抽出只能抽出一条数据,但后面的抽出就没问题了.代码和执行结果如下:
for(;;)
{
EXEC SQL FETCH MKCPTRT01_CUR INTO :sPnt_Data1;---------------->sPnt_Data1是一个数组,定义:sPnt_Data1[5000]
printf("sqlcode =%d\n",sqlca.sqlcode);
printf("sqlca.sqlerrd[2] =%d\n",sqlca.sqlerrd[2]);
}满足抽出条件的数据有10000条,其中每条数据都有一个字段的值是NULL.打印出的效果如下:
sqlcode=-1405
sqlca.sqlerrd[2]=1
sqlcode=-1405
sqlca.sqlerrd[2]=5000
sqlcode=-1403
sqlca.sqlerrd[2]=4999问题:为什么执行结果不是下面这样的?如果数据中没有NULL的时候,可以得到下面的结果.
sqlcode=0
sqlca.sqlerrd[2]=5000
sqlcode=0
sqlca.sqlerrd[2]=5000
实在想不出是什么原因造成的,有谁知道,请多多指教,先谢过了.
for(;;)
{
EXEC SQL FETCH MKCPTRT01_CUR INTO :sPnt_Data1;---------------->sPnt_Data1是一个数组,定义:sPnt_Data1[5000]
printf("sqlcode =%d\n",sqlca.sqlcode);
printf("sqlca.sqlerrd[2] =%d\n",sqlca.sqlerrd[2]);
}满足抽出条件的数据有10000条,其中每条数据都有一个字段的值是NULL.打印出的效果如下:
sqlcode=-1405
sqlca.sqlerrd[2]=1
sqlcode=-1405
sqlca.sqlerrd[2]=5000
sqlcode=-1403
sqlca.sqlerrd[2]=4999问题:为什么执行结果不是下面这样的?如果数据中没有NULL的时候,可以得到下面的结果.
sqlcode=0
sqlca.sqlerrd[2]=5000
sqlcode=0
sqlca.sqlerrd[2]=5000
实在想不出是什么原因造成的,有谁知道,请多多指教,先谢过了.
把sql中可能返回null值的列使用nvl函数,比如nvl(colName,'*')