Thread: BUG #6583: for loop cursor

BUG #6583: for loop cursor

From
biju.george@ust-global.com
Date:
The following bug has been logged on the website:

Bug reference:      6583
Logged by:          Biju George
Email address:      biju.george@ust-global.com
PostgreSQL version: 8.4.0
Operating system:   Linux
Description:=20=20=20=20=20=20=20=20

Just this simple code throws below error --
CREATE OR REPLACE FUNCTION my_temp_func(v_acc_type integer)
  RETURNS void AS
$BODY$
declare
v_cur cursor (acc_num integer) is select pid from public.my_trade_table
where acc_type =3D acc_num;
begin
for record_var in v_cur(v_acc_type) loop
raise notice 'ID is %',record_var.id;
end loop;
end;
$BODY$
  LANGUAGE plpgsql;

------------Error---------------
ERROR:  syntax error at or near "$1"
LINE 1:   $1 ( $2 )
          ^
QUERY:    $1 ( $2 )
CONTEXT:  SQL statement in PL/PgSQL function "my_temp_func" near line 4

********** Error **********

ERROR: syntax error at or near "$1"
SQL state: 42601
Context: SQL statement in PL/PgSQL function "my_temp_func" near line 4

Re: BUG #6583: for loop cursor

From
Tom Lane
Date:
biju.george@ust-global.com writes:
> The following bug has been logged on the website:
> Bug reference:      6583
> Logged by:          Biju George
> Email address:      biju.george@ust-global.com
> PostgreSQL version: 8.4.0
> Operating system:   Linux
> Description:

> Just this simple code throws below error --
> CREATE OR REPLACE FUNCTION my_temp_func(v_acc_type integer)
>   RETURNS void AS
> $BODY$
> declare
> v_cur cursor (acc_num integer) is select pid from public.my_trade_table
> where acc_type = acc_num;
> begin
> for record_var in v_cur(v_acc_type) loop
> raise notice 'ID is %',record_var.id;
> end loop;
> end;
> $BODY$
>   LANGUAGE plpgsql;

Works for me in 8.4.11 (after correcting record_var.id -> record_var.pid
at line 6).  Maybe you need to update to some more recent version than
8.4.0.

            regards, tom lane

Re: BUG #6583: for loop cursor

From
Tom Lane
Date:
I wrote:
> Works for me in 8.4.11 (after correcting record_var.id -> record_var.pid
> at line 6).  Maybe you need to update to some more recent version than
> 8.4.0.

Actually, I do get the described behavior when trying this in 8.3,
which does not have FOR-over-cursor.  So maybe the more appropriate
question is whether you're really running 8.4.anything.

            regards, tom lane

Re: BUG #6583: for loop cursor

From
"Biju George (UST, IND)"
Date:
Hi Tom,
=20
Well I thought I was running version "8.4.*" but it turned out to be "8.2.1=
4" when I did a show server_version in pgAdminIII. So, is this a known issu=
e?=20
Well I won't possibly be able to upgrade the version as its bundled with th=
e DB. :-(
=20
Cordially,
Biju George
UST Global | Trivandrum

________________________________

From: Tom Lane [mailto:tgl@sss.pgh.pa.us]
Sent: Thu 4/12/2012 8:34 PM
To: Biju George (UST, IND)
Cc: pgsql-bugs@postgresql.org
Subject: Re: [BUGS] BUG #6583: for loop cursor=20



I wrote:
> Works for me in 8.4.11 (after correcting record_var.id -> record_var.pid
> at line 6).  Maybe you need to update to some more recent version than
> 8.4.0.

Actually, I do get the described behavior when trying this in 8.3,
which does not have FOR-over-cursor.  So maybe the more appropriate
question is whether you're really running 8.4.anything.

                        regards, tom lane