Re: ECPG cursor examples should include EXEC SQL WHENEVER NOT FOUND CONTINUE; after the while loop

From: Bruce Momjian <bruce(at)momjian(dot)us>
To: andrew(at)andrewculver(dot)com, pgsql-docs(at)lists(dot)postgresql(dot)org
Subject: Re: ECPG cursor examples should include EXEC SQL WHENEVER NOT FOUND CONTINUE; after the while loop
Date: 2021-08-18 16:17:03
Message-ID: 20210818161703.GC13002@momjian.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-docs

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 <bruce(at)momjian(dot)us> https://momjian.us
EDB https://enterprisedb.com

If only the physical world exists, free will is an illusion.

In response to

Browse pgsql-docs by date

  From Date Subject
Next Message David G. Johnston 2021-08-19 23:47:32 Re: Unclear\mistakable description of UPDATE behaviour in "13.2.1. Read Committed Isolation Level"
Previous Message Laurenz Albe 2021-08-18 12:24:13 Re: Improve documentation for pg_upgrade, standbys and rsync