- 论坛徽章:
- 0
|
函数代码如下:
/*******************************************************/
/* 功能:从文件中读出数据 */
/* 输入参数:1.文件指针 2.读数据长度 */
/* 输出参数: 1.读出字符串(出错时为-1) */
/*******************************************************/
#ifdef _cplusplus
extern "C"
#endif
void SQL_API_FN ffread(
SQLUDF_INTEGER *infp,
SQLUDF_INTEGER *rsize,
SQLUDF_VARCHAR *outstring,
SQLUDF_NULLIND *infpnull,
SQLUDF_NULLIND *rsizenull,
SQLUDF_NULLIND *outstringnull,
SQLUDF_TRAIL_ARGS
)
{
FILE *fp;
int len=1024;
long rlen;/*实际读出长度*/
char* ret;
char tmpbuf[1024];
if(*infpnull == -1 ){
*outstring = NULL;
*outstringnull = -1;
return;
}
fp = ( FILE* ) *infp;
ret = fgets(tmpbuf, len ,fp);
// fread(tmpbuf, len,1, fp);
if (ret == NULL){
*outstring=NULL;
*outstringnull = -1;
return;
}
rlen = strlen( tmpbuf );
if( rlen >; *rsize )
rlen = *rsize ;
// memcpy(outstring, tmpbuf, rlen);
outstring[rlen] = '\x0';
}
然后我写了一个简单得存储过程调用了一下这个函数,还有一个写文件的write函数,但是存储过程出不来结果(系统没有反应),强行推出以后,再去drop function ,结果发现drop不掉了,也不知道为什么!!
在我一句一句的测试过程中,我发现这个函数体中,一到fgets函数那系统就没有了反应,若注释掉这一句,存储过程可以返回!!!
声明一下,我的数据库版本是DB2 7.2.0,系统是turbo linux,我怀疑是不是db2的版本太低,与c语言的兼容性不好!!
请诸位给点意见,谢谢啦!! |
|