ecpg did not precompile declare cursor
От | Lee Kindness |
---|---|
Тема | ecpg did not precompile declare cursor |
Дата | |
Msg-id | 15475.27272.230954.548931@kelvin.csl.co.uk обсуждение исходный текст |
Ответ на | ecpg did not precompile declare cursor (Bernhard Rückerl <bernhard_rueckerl@yahoo.de>) |
Список | pgsql-bugs |
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 fromMANIFOLD_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.
В списке pgsql-bugs по дате отправления: