Postgres tiene una función dedicada exactamente para ese propósito:array_fill()
Úsalo:
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;
Notas
- Dimensiones de matriz en
numeric[7][24]
son solo documentación. El manual:
-
Sobre el operador de asignación en plpgsql:
:=
o=
: -
Por lo general, no es posible escribir en un elemento de matriz directamente. Puede concatenar o añadir/anteponer elementos. O asigne una matriz como un todo. Detalles en el manual. Pero una afirmación como esta no es posible :
tarifas[%][%] = 0 -
El límite inferior predeterminado de una matriz es 1, no 0. Pero puede definir una dimensión de matriz arbitraria. Ejemplo:
SELECT '[2:3][2:4]={{7,7,7},{7,7,7}}'::int[]