Обсуждение: BUG #6583: for loop cursor
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
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
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
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