/******************************************* ***** 函数功能 : ***** 抽取数据库记录 ***** ********************************************/ int extract_data(char *efilename,const char *sqlname) { FILE *fpWrite; EXEC SQL BEGIN DECLARE SECTION; varchar v_str_sql[3000+1]; /*SQL语句 */ varchar vc_expcol[MAXLEN]; EXEC SQL END DECLARE SECTION; /**/ strcpy((char *)v_str_sql.arr,sqlname); v_str_sql.len=strlen((char*)v_str_sql.arr); #ifdef DEBUG printf("SQL语句%s. ",v_str_sql.arr); #endif EXEC SQL WHENEVER SQLERROR GOTO prepare_exp_error; if ((fpWrite = fopen(efilename, "w+")) == NULL) { fprintf(stderr,"Cannot open data file %s ", efilename); exit(1); } /*声明游标处理方式*/ EXEC SQL PREPARE sqlstmt FROM :v_str_sql; EXEC SQL DECLARE extract_cur CURSOR FOR sqlstmt; EXEC SQL OPEN extract_cur; for(;;) { /*提取数据*/ EXEC SQL FETCH extract_cur INTO :vc_expcol ; if (sqlca.sqlcode == 1403) { fprintf(stderr,"数据已经抽取完成或是没有符合条件的数据! "); break; } vc_expcol.arr[vc_expcol.len] = '