From: | Ian Barwick <barwick(at)gmx(dot)net> |
---|---|
To: | "Josh Berkus" <josh(at)agliodbs(dot)com>, Greg Johnson <gregj(at)interprose(dot)com>, pgsql-sql(at)postgresql(dot)org |
Subject: | Re: Passing array to PL/SQL and looping |
Date: | 2002-09-28 22:25:06 |
Message-ID: | 200209290025.06378.barwick@gmx.net |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-sql |
On Friday 27 September 2002 18:04, Josh Berkus wrote:
> Greg,
>
> > CREATE FUNCTION test_array( ) RETURNS VARCHAR[] AS '
> > DECLARE
> > return_array VARCHAR[];
> > BEGIN
> > return_array[0] := ''test'';
> > return_array[1] := ''test 1'';
> > return_array[2] := ''test 2'';
> > RETURN (return_array);
> > END;'
> > LANGUAGE 'plpgsql';
>
> No, it's not possible to do the above. This is a flaw in the current
> implementation of PL/pgSQL that will not be resolved until we attract
> some new Postgres hackers who really care about upgrading PL/pgSQL.
>
> Currently, if you want to use an array, it has to be passed as a
> parameter, or come from an external table. You cannot declare an
> Array data type. Annoying, really.
If I replace the return_array allocations in the above example with this
line:
return_array := ''{ ''''test'''', ''''test 1'''', ''''test 2''''}'';
it _seems_ to work as expected, at least in 7.3b1., e.g.
test=> select array_dims(test_array) from test_array();
array_dims
------------
[1:3]
(1 row)
Ian Barwick
barwick(at)gmx(dot)net
From | Date | Subject | |
---|---|---|---|
Next Message | Roland Roberts | 2002-09-29 00:27:37 | Re: Passing array to PL/SQL and looping |
Previous Message | Alvaro Herrera | 2002-09-28 04:46:00 | Re: [SQL] function return multiply rows |