"Eliot, Christopher" <christopher.eliot@xxxxxxxxxxxxx> writes: > CREATE FUNCTION func1() > RETURNS VOID AS $$ > DECLARE > a INTEGER[2][2][2][200]; > BEGIN > a[1][2][1][33] = 0; > a[2][1][1][33] = 0; > END; > $$ LANGUAGE PLPGSQL; > When I run this function, I get: > ERROR: array subscript out of range. Yeah. I'm afraid that declaration is basically just noise: it doesn't do anything for you that "DECLARE a integer[];" wouldn't do. If you want the array actually filled out to the indicated dimensions then you have to do that by hand. regards, tom lane