Re: sqlstate 02000 while declaring cursor/freeing prepared
От | andy rost |
---|---|
Тема | Re: sqlstate 02000 while declaring cursor/freeing prepared |
Дата | |
Msg-id | 4314BD2D.1040805@noaa.gov обсуждение исходный текст |
Ответ на | Re: sqlstate 02000 while declaring cursor/freeing prepared (Michael Fuhr <mike@fuhr.org>) |
Список | pgsql-sql |
Just so that we can snip this thread, we've confirmed that free cursor and free statement do not affect sqlca structure elements sqlcode and sqlstate. Michael Fuhr wrote: > On Mon, Aug 29, 2005 at 04:39:36PM -0500, andy rost wrote: > >>I worked on my problem a little further and have a little more >>information to share. The declare statement that fails consistently >>follows a select statement that returns zero rows (and sqlcode 100 and >>sqlstate '02000'). If I ommit the select statement from the code or set >>sqlcode to 0 before calling the declare statement, the declare statement >>works fine. >> >>It appears as though the declare statement is not updating the sqlca >>structure. Is this by design for the ecpg options that I'm using? Did I >>pick up bad habits while using Informix? > > > Apparently since PostgreSQL doesn't actually have an OPEN statement, > the ECPG code generator doesn't issue the DECLARE until the code > OPENs the cursor. Observe: > > % cat foo.pgc > int > main(void) > { > EXEC SQL CONNECT TO DEFAULT; > > printf("before DECLARE\n"); > EXEC SQL DECLARE curs CURSOR FOR SELECT 1; > printf("after DECLARE, before OPEN\n"); > EXEC SQL OPEN curs; > printf("after OPEN\n"); > > EXEC SQL CLOSE curs; > EXEC SQL DISCONNECT; > > return 0; > } > > % ecpg foo.pgc > % cat foo.c > ... > printf("before DECLARE\n"); > /* declare curs cursor for select 1 */ > #line 7 "foo.pgc" > > printf("after DECLARE, before OPEN\n"); > { ECPGdo(__LINE__, 0, 1, NULL, "declare curs cursor for select 1 ", ECPGt_EOIT, ECPGt_EORT);} > #line 9 "foo.pgc" > > printf("after OPEN\n"); > ... > > Notice that "after DECLARE" actually comes *before* the DECLARE > statement is issued, so references to sqlcode and sqlstate would > see values from a previous command. I don't know if DECLARE is > supposed to affect error codes or not; I'd have to consult the > standard. > -- -------------------------------------------------------------------------------- Andrew Rost National Operational Hydrologic Remote Sensing Center (NOHRSC) National Weather Service, NOAA 1735 Lake Dr. West, Chanhassen, MN 55317-8582 Voice: (952)361-6610 x 234 Fax: (952)361-6634 arost@nohrsc.nws.gov http://www.nohrsc.nws.gov --------------------------------------------------------------------------------
В списке pgsql-sql по дате отправления: