This is expected behaviour, the 'real' code gets emitted when you OPEN
the cursor, i.e. you should be doing something like:

 EXEC SQL DECLARE demo_cur CURSOR FOR
   SELECT field1, field2
   FROM test;
 EXEC SQL OPEN demo_cur;
 if( sqlca.sqlcode != 0 )
 {
   some_error();
   return;
 }
 while( 1 )
 {
   EXEC SQL FETCH demo_cur INTO :field1, :field2;
   if( sqlca.sqlcode < 0 )
   {
     some_error();
     break;
   }
   else if( sqlca.sqlcode != 0 ) /* or == 100... */
     break;

   process_row();
 }
 EXEC SQL CLOSE demo_cur;

Bernhard Rückerl writes:
 > Hello,
 > 
 > I have downloaded postgresql 7.2 on my machine.
 > Running ecpg on my .ec-file I found that ecpg did not process 
 > the statements "exec sql declare xxx cursor for select.
 > 
 > The part in my .ec-file:
 > if ( firstcall )
 >    {
 >    calid1 = calid;
 >    EXEC SQL DECLARE CURMFDPOINT CURSOR FOR SELECT STABLE_OR_INSTABLE , 
 >             HIERARCHY , POINT_ID , X1 , P1 , X2 , P2 FROM MANIFOLD_POINTS WHERE 
 >             CAL_ID = :calid1;
 >    raiseerror( );
 >    firstcall = false;
 >    }
 > 
 > was transformed into
 > if ( firstcall )
 >    {
 >    calid1 = calid;
 >    /* declare CURMFDPOINT  cursor for select  STABLE_OR_INSTABLE  , HIERARCHY  , 
 >POINT_ID  , X1  , P1  , X2  , P2   from MANIFOLD_POINTS where CAL_ID  = ?   */
 > #line 224 "dbcontrol.ec"
 > 
 >    raiseerror( );
 >    firstcall = false;
 >    }
 > So the declare cursor statement was just commented out. As a consequence the 
 > programm terminated with sqlca.sqlcode=-602 when doing the according 
 > fetch statement.

---------------------------(end of broadcast)---------------------------
TIP 2: you can get off all lists at once with the unregister command
    (send "unregister YourEmailAddressHere" to [EMAIL PROTECTED])

Reply via email to