Search Postgresql Archives

ECPG - how to fetch then sort strings

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



I need to fetch strings from a database with ECPG and then sort them in C. Here is one of my failed attempts:

###########################

int main(int argc, char *argv[]) {

 int maxlen=20;
 long nrec;

 EXEC SQL BEGIN DECLARE SECTION;
 varchar filenms[][maxlen]=NULL;
 char dbnm[50];
 EXEC SQL END DECLARE SECTION;

 sprintf(dbnm,"%s",argv[1]);

 EXEC SQL CONNECT TO :dbnm;

 EXEC SQL SELECT filenm INTO :filenms FROM beamdata;
 nrec = sqlca.sqlerrd[2];   /* Returns number of rows retrieved */

 EXEC SQL COMMIT;
 EXEC SQL DISCONNECT;

 qsort(filenms, nrec, maxlen*sizeof(char), scmp);

 free(filenms);

 return 0;

}

static int scmp( const void *sp1, const void *sp2 )
{
   return( strcmp(*(char **)sp1, *(char **)sp2) );
}


###########################

It compiles ok, but I get garbage in variable filenms. If I change the declaration of filenms to:
 char **filenms=NULL;
the SQL query returns strings ok. But the strings have variable length, and I need to specify one length in qsort, so it won't work. Another attempt to try to specify string length:
 char (*filenms)[maxlen]=NULL;
Won't compile, ECPG doesn't accept this syntax. Well, and strcmp crashes (segmentation fault) in function scmp regardless what I try. Not SQL error, I know, but if anybody can tell why I'd be grateful.

Any suggestions?

Thanks,
Poul Jensen


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux