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])