Postgres má vyhrazenou funkci přesně pro tento účel:array_fill()
:
Použijte to:
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;
Poznámky
- Rozměry pole v
numeric[7][24]
jsou jen dokumentací. Příručka:
-
O operátoru přiřazení v plpgsql:
:=
nebo=
: -
Obecně není možné přímo zapisovat do prvku pole. Prvky můžete zřetězit nebo připojit / předřadit. Nebo přiřadit pole jako celek. Podrobnosti v příručce. Ale takové prohlášení není možné :
tarifas[%][%] = 0 -
Výchozí dolní mez pole je 1, nikoli 0. Můžete však definovat libovolný rozměr pole. Příklad:
SELECT '[2:3][2:4]={{7,7,7},{7,7,7}}'::int[]