Jenny,
although this is old but i find it worth mentioning tom's comment on it. I hit your comment on facing similar issue.
The cited example is pretty iffy since it assumes that the valid array entries are all > 0. In recent PG version you can use the array_upper and array_lower functions instead:
for i in array_lower(a,1) .. array_upper(a,1) loop -- do something with a[i] end loop;
regards, tom lane
I got this when I was searching for something else. I will forward this to you. http://archives.postgresql.org/pgsql-general/2003-11/msg00852.php CREATE or REPLACE FUNCTION foo(integer[]) RETURNS int AS 'DECLARE a alias for $1; index integer := 1; total integer := 0; BEGIN WHILE a[index] > 0 LOOP total := total + a[index]; index := index + 1; END LOOP;
RETURN total; END; ' LANGUAGE 'plpgsql';
test=> select foo('{1,2}');
foo
-----
3
(1 row)
On Tue, 2003-12-16 at 03:25, K. Deepa wrote:
Hi all, I am using postgresql7.4. How to handle arrays in plpgsql. How can I pass an array. Is it possible to retrieve values from an array by indexing it like
argument : '{1,2,3}' Return value : varchar array
Variables : ---------
a alias for $1 b _varchar
Usage : -----
b[1] = a[1]; b[2] = a[2];
return b;
Is it possible.
TIA,
---------------------------(end of broadcast)--------------------------- TIP 8: explain analyze is your friend