Re: ECPG: non-integer constant in group by - Mailing list pgsql-general

From Poul Jensen
Subject Re: ECPG: non-integer constant in group by
Date
Msg-id 450BE450.1090103@gfy.ku.dk
Whole thread Raw
In response to Re: ECPG: non-integer constant in group by  (Martijn van Oosterhout <kleptog@svana.org>)
Responses Re: ECPG: non-integer constant in group by  (Martijn van Oosterhout <kleptog@svana.org>)
List pgsql-general
Thank you for your replies. My next attempt was:

for (i=0; i<NVARS; i++)
{
    sprintf(stmt,"SELECT %s FROM beamdata GROUP BY %s;",vars[i],vars[i]);
    EXEC SQL EXECUTE IMMEDIATE :stmt;
    n_occ[i] = sqlca.sqlerrd[2];
}

It works, but throws error message "too few parameters" every time. I
need to add INTO <host variable> (I do need to retrieve the data for
later use anyway), but it appears I can't use EXECUTE IMMEDIATE with a
host variable in the statement. So now I can only think of one way:

  EXEC SQL SELECT filenm INTO :filenms FROM beamdata GROUP BY filenm;
  n_occ[0] = sqlca.sqlerrd[2];
  EXEC SQL SELECT yr INTO :yrs FROM beamdata GROUP BY yr;
  n_occ[1] = sqlca.sqlerrd[2];
  <Repeat for all variables!!>

Works and will get the job done, but so repetitive that it's hard to
accept. Is there no way to get away with a loop?

Poul Jensen

pgsql-general by date:

Previous
From: Martijn van Oosterhout
Date:
Subject: Re: ECPG: non-integer constant in group by
Next
From: Martijn van Oosterhout
Date:
Subject: Re: ECPG: non-integer constant in group by