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