Thread: Re: [INTERFACES] ecpg cursors and scope
>A) In seperate functions: > >func1() { > exec sql declare test_cur for ... >} >func2() { > exec sql declare test_cur for ... /* same or different sql */ >} > >B) In an if: > >if(...) { > exec sql declare test_cur for ... >} else { > exec sql declare test_cur for ... /* same or different sql */ >} > >These both yield "cursor test_cur already defined" I try this too, but I got the same error... )ECPG distributed with PostgreSQL 6.4.2) I think, that principly is correct contructions like this: if (condition) { exec sql declare cur cursor for select count (*) from tmp where col1 - :num; } else { exec sql declare cur cursor for select count (*) from tmp; } exec sql whenever not found continue; exec sql open cur; exec sql whenever not found do break; while (1) { exec sql fetch in cur into :num1; } But this isn't allow too, because second exec sql declare.... - in this line I got the same message...:-( One time I wrote this exec<space><space>sql - and ECPG say parse error too, but I forgot, that bad was only this two spaces between 'exec' and 'sql'.... Next, some 'interesting' situations I got when I use exec sql whenever... - scope for this is not as the program running, but as the source is parsing... - this is ...'-) ---------------------------------------------------------------------------- -- Pavel Janousek (PaJaSoft) FoNet, spol. s r. o. Vyvoj software, sprava siti, Unix, Web, Y2K Anenska 11, 602 00 Brno E-mail: mailto:Janousek@FoNet.Cz Tel.: +420 5 4324 4749 SMS: mailto:P.Janousek@SMS.Paegas.Cz Fax.: +420 5 4324 4751 WWW: http://WWW.FoNet.Cz/ E-mail: mailto:Info@FoNet.Cz ---------------------------------------------------------------------------- ---
On Wed, Apr 21, 1999 at 12:36:59PM +0200, Pavel PaJaSoft Janousek wrote: > I think, that principly is correct contructions like this: No, to do this you need the PREPARE statement. > ... > > One time I wrote this exec<space><space>sql - and ECPG say parse error > too, but I forgot, that bad was only this two spaces between 'exec' and > 'sql'.... Hmm, this is not good. > Next, some 'interesting' situations I got when I use exec sql > whenever... - scope for this is not as the program running, but as the > source is parsing... - this is ...'-) That's what the standard says. The whenever statement is a preprocessor statement. Michael -- Michael Meskes | Go SF 49ers! Th.-Heuss-Str. 61, D-41812 Erkelenz | Go Rhein Fire! Tel.: (+49) 2431/72651 | Use Debian GNU/Linux! Email: Michael.Meskes@gmx.net | Use PostgreSQL!
I just tried to compile my program and found that exec sql .... statement must have one space between 'exec' and 'sql', otherwise it is a mistake. -Margarita On Thu, 22 Apr 1999, Michael Meskes wrote: > > > > One time I wrote this exec<space><space>sql - and ECPG say parse error > > too, but I forgot, that bad was only this two spaces between 'exec' and > > 'sql'.... > > Hmm, this is not good. >
On Thu, Apr 22, 1999 at 12:16:42PM -0400, Margarita Barvinok wrote: > > I just tried to compile my program and found that > > exec sql .... statement must have one space between 'exec' and 'sql', > > otherwise it is a mistake. Yes, I will take care of this. Michael -- Michael Meskes | Go SF 49ers! Th.-Heuss-Str. 61, D-41812 Erkelenz | Go Rhein Fire! Tel.: (+49) 2431/72651 | Use Debian GNU/Linux! Email: Michael.Meskes@gmx.net | Use PostgreSQL!