Re: ECPG: non-integer constant in group by
От | Poul Jensen |
---|---|
Тема | Re: ECPG: non-integer constant in group by |
Дата | |
Msg-id | 450B2CD1.4000408@gfy.ku.dk обсуждение исходный текст |
Ответ на | Re: ECPG: non-integer constant in group by (Joachim Wieland <joe@mcknight.de>) |
Ответы |
Re: ECPG: non-integer constant in group by
|
Список | pgsql-general |
Joachim Wieland wrote: > On Fri, Sep 15, 2006 at 02:40:49AM -0800, Poul Jensen wrote: > >> 1) It seems like the fastest way to find the # of distinct elements in a >> column is using GROUP BY. With ECPG, if I try >> EXEC SQL SELECT filenm FROM beamdata GROUP BY filenm; >> I will get "sql error Too few arguments". Why? Can I correct the >> query to avoid the error message? (sqlca.sqlerrd[2] does contain the # >> of elements in spite of error) >> > The problem is that you are selecting a value but you don't say where ecpg > should store the result. You're missing the "INTO :var" part. > Thank you; that makes sense. I'm not sure why it's considered an error though. Documentation says "Any SQL command can be run...", and why not. The other problem I posted is worse and is what's really keeping me stuck. Why are my text strings considered unacceptable "non-integer constants"? Here are the relevant lines of code: #define NVARS 24 EXEC SQL BEGIN DECLARE SECTION; char *vars[NVARS] = { "filenm", "yr", "mo", "dy", "hr", "mt", "sc", "us", "stat_id", "bmnum", "channel", "scnflag", "cp_id", "intt", "intt_us", "frang", "rsep", "tfreq", "noise", "natten", "nave", "nrang", "gsct", "isct" }; char *stmt = "SELECT ? FROM beamdata GROUP BY ?;"; EXEC SQL END DECLARE SECTION; EXEC SQL PREPARE query FROM :stmt; for (i=0; i<NVARS; i++) { EXEC SQL EXECUTE query USING :vars[i], :vars[i]; } Fails at EXECUTE with error message: sql error 'non-integer constant in GROUP BY'
В списке pgsql-general по дате отправления: