BUG #6583: for loop cursor

Started by Biju George (UST, IND)about 14 years ago4 messagesbugs
Jump to latest
#1Biju George (UST, IND)
Biju.George@ust-global.com

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;

------------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

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Biju George (UST, IND) (#1)
Re: BUG #6583: for loop cursor

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

#3Tom Lane
tgl@sss.pgh.pa.us
In reply to: Tom Lane (#2)
Re: BUG #6583: for loop cursor

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

#4Biju George (UST, IND)
Biju.George@ust-global.com
In reply to: Biju George (UST, IND) (#1)
Re: BUG #6583: for loop cursor

Hi Tom,

Well I thought I was running version "8.4.*" but it turned out to be "8.2.14" when I did a show server_version in pgAdminIII. So, is this a known issue?
Well I won't possibly be able to upgrade the version as its bundled with the DB. :-(

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

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