Thread: Declare Cursor...

Declare Cursor...

From
Baris Ulu
Date:
I am trying to declare a cursor inside a plpgsql function in a
begin end block as in the following:
create function func_1(char, float8, int4, int4) returns int4 as 'declare  x alias for $1;  y alias for $2;  z alias
for$3;  t alias for $4;  ...begin work; declare cursor_x cursor for select a, b, c, d from table_1 where a = x; ...end
work;
when this function is compiled, it gives me the following error:       NOTICE: plpgsql: ERROR during compile of func_1
nearline ...       ERROR: parse error at or near "CURSOR"
 

If anyone can help me about my problem, I will be very happy...THANKS!

Baris ULU
Computer Engineer



Re: [SQL] Declare Cursor...

From
wieck@debis.com (Jan Wieck)
Date:
Baris ULU wrote:

>    I am trying to declare a cursor inside a plpgsql function in a
> begin end block as in the following:
> create function func_1(char, float8, int4, int4) returns int4 as '
>  declare
>    x alias for $1;
>    y alias for $2;
>    z alias for $3;
>    t alias for $4;
>    ...
>  begin work;
>   declare cursor_x cursor for select a, b, c, d from table_1 where a = x;
>   ...
>  end work;
>
>    when this function is compiled, it gives me the following error:
>         NOTICE: plpgsql: ERROR during compile of func_1 near line ...
>         ERROR: parse error at or near "CURSOR"
>
> If anyone can help me about my problem, I will be very happy...THANKS!

    Backend  functions  cannot use cursors. This is not supported
    by  the  underlying  mechanism  of  portals  and  the  server
    programming interface.

    Yes,  it's  a very bad limitation since the SPI tries to load
    the entire result set into memory, possibly blowing away  the
    backend  process.   I  don't know how and when we will tackle
    this, but it should go onto the TODO, Bruce.


Jan

--

#======================================================================#
# It's easier to get forgiveness for being wrong than for being right. #
# Let's break this rule - forgive me.                                  #
#========================================= wieck@debis.com (Jan Wieck) #