Обсуждение: 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