Postgres има специална функция точно за тази цел:array_fill()
:
Използвайте го:
CREATE OR REPLACE FUNCTION teste()
RETURNS void AS
$func$
DECLARE
tarifas numeric[7][24] := array_fill(0, ARRAY[7,24]);
a int;
b int;
BEGIN
-- do something
END
$func$ LANGUAGE plpgsql;
Бележки
- Размери на масива в
numeric[7][24]
са само документация. Ръководството:
-
Относно оператора за присвояване в plpgsql:
:=
или=
: -
Обикновено не е възможно да се пише директно в елемент от масив. Можете да свързвате или добавяте/предварявате елементи. Или задайте масив като цяло. Подробности в ръководството. Но изявление като това е не възможно :
tarifas[%][%] = 0 -
Долната граница по подразбиране на масив е 1, а не 0. Но можете да дефинирате произволно измерение на масива. Пример:
SELECT '[2:3][2:4]={{7,7,7},{7,7,7}}'::int[]