Обсуждение: 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!