On Sat, Jul 3, 2021 at 11:54:11AM +0000, PG Doc comments form wrote: > The following documentation comment has been logged on the website: > > Page: https://www.postgresql.org/docs/13/ecpg-variables.html > Description: > > Without this line: > EXEC SQL WHENEVER NOT FOUND CONTINUE; > after the while(1), I find that ECPG CURSOR examples fail. > > For example, this example under 36.4.4.3.2. Structures fails:
Uh, can you give me full C example to test? I already see EXEC SQL WHENEVER NOT FOUND DO BREAK in the sample code, so I don't see how CONTINUE would actually work, since it would just loop over the result infinitely. --------------------------------------------------------------------------- > > EXEC SQL BEGIN DECLARE SECTION; > typedef struct > { > int oid; > char datname[65]; > long long int size; > } dbinfo_t; > > dbinfo_t dbval; > EXEC SQL END DECLARE SECTION; > > memset(&dbval, 0, sizeof(dbinfo_t)); > > EXEC SQL DECLARE cur1 CURSOR FOR SELECT oid, datname, > pg_database_size(oid) AS size FROM pg_database; > EXEC SQL OPEN cur1; > > /* when end of result set reached, break out of while loop */ > EXEC SQL WHENEVER NOT FOUND DO BREAK; > > while (1) > { > /* Fetch multiple columns into one structure. */ > EXEC SQL FETCH FROM cur1 INTO :dbval; > > /* Print members of the structure. */ > printf("oid=%d, datname=%s, size=%lld\n", dbval.oid, dbval.datname, > dbval.size); > } > > EXEC SQL CLOSE cur1; -- Bruce Momjian <br...@momjian.us> https://momjian.us EDB https://enterprisedb.com If only the physical world exists, free will is an illusion.