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
[EMAIL PROTECTED]
http://www.nohrsc.nws.gov
--------------------------------------------------------------------------------
---------------------------(end of broadcast)---------------------------
TIP 3: Have you checked our extensive FAQ?
http://www.postgresql.org/docs/faq