Обсуждение: Declaring arrays in plpgsql functions
I'm trying to convert rows from a table into a two dimensional array, and
thought I could do so in a plpgsql function, but I can't declare the return
variable as an array:
create function reservationIds(int4) returns text[][] as ' declare paramOriginalResNr alias for $1;
rs record;
id_src text[][];
begin for rs in select src, id from ReservationId where
originalResNr= paramOriginalResNr loop text[array_dim(text) + 1][0] := rs.src; text[array_dim(text) +
1][1]:= rs.id; end loop;
return id_src; end; '
language 'plpgsql';
, but when I select the function the parser complains: 'ERROR: parse error at
or near "["'. It seems to be the id_src declaration that's not correct; the
returns text[][] works.
I've tried text[2][30] to the same effect.
/Daniel
Daniel Lundin <daniel@helena-daniel.se> writes:
> I'm trying to convert rows from a table into a two dimensional array, and
> thought I could do so in a plpgsql function, but I can't declare the return
> variable as an array:
The declaration is fine (at least it works for me, in 7.2). The trouble
is with:
> text[array_dim(text) + 1][0] := rs.src;
> text[array_dim(text) + 1][1] := rs.id;
plpgsql doesn't support assigning to array elements :-(. (Even if it
did, you couldn't use array_dims() like that --- array_dims() returns
a string.)
regards, tom lane
I wrote:
> plpgsql doesn't support assigning to array elements :-(.
Drat, forgot a point I intended to make:
You might have better luck working in pltcl; it has better support for
arrays than plpgsql does.
regards, tom lane
On mån, mar 25, 2002 at 02:41:49 -0500, Tom Lane wrote: > I wrote: > > plpgsql doesn't support assigning to array elements :-(. > > Drat, forgot a point I intended to make: > > You might have better luck working in pltcl; it has better support for > arrays than plpgsql does. > There's no chance with plperl, or have I understood it correctly, that plperl doesn't support any way of doing selects? > regards, tom lane >