On Thu, 29 Nov 2007 18:11:22 +0400, Rodrigo De León <[EMAIL PROTECTED]> wrote:

On Nov 29, 2007 3:34 AM, Max Zorloff <[EMAIL PROTECTED]> wrote:
According to the docs it seems that only way would be to declare it as
something like :
myArray := ARRAY[[1,2], [3,4], [5,6]];

You can declare arbitrary-sized, n-dimensional arrays:
...
DECLARE
  myArray integer[][]; -- two-dimensional integer array
BEGIN
...
END;
...

See:
http://www.postgresql.org/docs/8.1/static/arrays.html

I can. But unfortunately :

create or replace function testfunc()
returns setof record as $$
DECLARE
  myArray int[][];
BEGIN
  FOR i IN 1..10 LOOP
    FOR j IN 1..10 LOOP
      RAISE NOTICE '% %', i, j;
      myArray[i][j] := 1;

    END LOOP;
  END LOOP;

  RETURN;
END
$$ language plpgsql;


ponline=# select testfunc();
NOTICE:  1 1
NOTICE:  1 2
ERROR:  invalid array subscripts
КОНТЕКСТ:  PL/pgSQL function "testfunc" line 7 at assignment

2-dimensional arrays do not grow like 1-dimensional do (it says so in the docs). The initial array is 1x1 size. I suppose I'm stuck with emulating 2-dim arrays through
1-dim arrays because I also need them to grow later.

---------------------------(end of broadcast)---------------------------
TIP 2: Don't 'kill -9' the postmaster

Reply via email to