Re: PL/pgSQL multidimension (matrix) array in function - Mailing list pgsql-sql

From Joe Conway
Subject Re: PL/pgSQL multidimension (matrix) array in function
Date
Msg-id 414FB192.5060100@joeconway.com
Whole thread Raw
In response to PL/pgSQL multidimension (matrix) array in function  (Sergio Fantinel <sergio.fantinel@lnl.infn.it>)
List pgsql-sql
Sergio Fantinel wrote:
> I found how to use, inside a PL/pgSQL function, a two-dimensions array 
> (matrix).
> There is a limitation: the number of the 'columns' of the matrix is 
> fixed at declaration time (in DECLARE section) and you need to manually 
> initialize all the elements in the first 'row' of the matrix.

You should use '{}' to initialize the array to empty. See below for an 
example:

CREATE OR REPLACE FUNCTION testarray (integer, integer) RETURNS SETOF 
integer[] AS'
DECLARE  n alias for $1;    -- number of rows is passed as argument  i INTEGER;  j integer;  k alias for $2;
--matrix columns number  a integer[];
 
begin  for i in 1..n loop   a := ''{}'';               -- create empty array   for j in 1..k loop     a := a || i;
returnnext a;   end loop;  end loop;  return;
 
end;
'LANGUAGE 'plpgsql';

regression=# select * from testarray(2,3); testarray
----------- {1} {1,1} {1,1,1} {2} {2,2} {2,2,2}
(6 rows)

HTH,

Joe


pgsql-sql by date:

Previous
From: "Dean Gibson (DB Administrator)"
Date:
Subject: Re: JOIN performance
Next
From: Tom Lane
Date:
Subject: Re: JOIN performance