Обсуждение: Re: [INTERFACES] ecpg cursors and scope

Поиск
Список
Период
Сортировка

Re: [INTERFACES] ecpg cursors and scope

От
"Pavel PaJaSoft Janousek"
Дата:
>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
----------------------------------------------------------------------------
---



Re: [INTERFACES] ecpg cursors and scope

От
Michael Meskes
Дата:
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!

Re: [INTERFACES] ecpg cursors and scope

От
Margarita Barvinok
Дата:
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.
>


Re: [INTERFACES] ecpg cursors and scope

От
Michael Meskes
Дата:
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!