Обсуждение: ECPG error: break statement not within loop or switch

Поиск
Список
Период
Сортировка

ECPG error: break statement not within loop or switch

От
Hans-Jürgen Schönig
Дата:
I have written a small application but I can't compile the code because
of an error I have never seen before:

ecpg retrieve.pgc -o file.c
gcc -g -I /usr/include/pgsql -o prog file.c -L /usr/share/pgsql -lecpg
-lpq
retrieve.pgc: In function `main':
retrieve.pgc:57: break statement not within loop or switch
make: *** [x] Fehler 1

What does it mean?
I have listed the crucial piece of code below:
EXEC SQL DECLARE mycursor CURSOR FOR mystatement;       EXEC SQL OPEN mycursor;
       EXEC SQL WHENEVER NOT FOUND DO BREAK;       while   (1)       {               EXEC SQL FETCH IN mycursor INTO
:id,:name;               flag=1;               printf("records found: %i, %s\n\n", id, name);       }
 
       if      (flag == 0)       {               printf("Insert the name of the OS: ");               scanf("%256s",
inos);
               EXEC SQL INSERT INTO os (id, name) VALUES (':intext',
':inos');         // THE ERROR OCCURS HERE               if      (sqlca.sqlcode)               {
printf("%s\n",sqlca.sqlerrm.sqlerrmc);                       exit(0);               }       }
 
       EXEC SQL CLOSE mycursor;       EXEC SQL DISCONNECT;

Can anybody help me?
   Hans



Re: ECPG error: break statement not within loop or switch

От
Christof Petig
Дата:
Hans-Jürgen Schönig wrote:

> I have written a small application but I can't compile the code because
> of an error I have never seen before:

[...]

> retrieve.pgc: In function `main':
> retrieve.pgc:57: break statement not within loop or switch
> make: *** [x] Fehler 1
>
>         EXEC SQL WHENEVER NOT FOUND DO BREAK;

this statement inserts a 'if (sqlca.sqlcode==100) break;' after each SQL
statement following

>                 EXEC SQL INSERT INTO os (id, name) VALUES (':intext',
> ':inos');         // THE ERROR OCCURS HERE

and here it harms (of course)

you should insert   EXEC SQL WHENEVER NOT FOUND CONTINUE;
after the while loop.

Yours  Christof